At first glance, several parts would appear to be the same on the CG125 ES and the XR125L. The engine and the carburettor for example. Whilst they are mostly the same, there are differences between them. These are highlighted below.
Please note, that the CG125 ES uses the JC30E engine. There are several different models of CG125 bikes and also several different engines that were used in them. For a list of the different engines used and which CG125 they were used in, please look at the Technical Information page. This page will only talk about the differences between the CG125 ES and the XR125L, both of which use the JC30E engine.
It's also worth noting, that just because the engine you are looking at is currently installed in an XR125L, that doesn't mean it's the XR125L varient of the JC30E engine. It's common to use the engine from a CG125 ES as a replacement engine for an XR125L because the CG125 ES was a vastly more popular motorbike than the XR125L, meaning that engines for them are a lot easier to find, and also cheaper than a real XR125L engine.
The JC30E engine was the engine used in the XR125L, at least in the UK, between the years of 2003 and 2008. The XR125L stopped being sold in the UK in 2008, but it was still sold in other territories after that date. My bike is a UK model, so I'm going to focus on the UK spec.
These are the main differences between a JC30E engine put in the Honda CG125 ES and the same engine put in a Honda XR125L.
The two rear most engine mounts are larger on the XR125L (10mm instead of 8mm)
The cylinder head on the XR125L variant has a top engine mount
The gear ratios are different in the gear box
The countershaft is a different length, so the position of the sprocket is different, which means your chain line is different
The sprocket cover (casing) and the metal sprocket guard are different
This table shows the range of serial numbers for the XR125L engines.
The UK engine serial numbers have a '2' as the second digit (32, 42, and 62), but you will notice there's no serial in the range "JC30E-5200001~5299999".
As noted above, several of the gear sets are different, as is the countershaft. The countershaft on the XR125L is about 11mm longer than the countershaft used in the CG125 ES, with the sprocket further from the centreline of the bike. I assume this is because the bike is wider to make room for larger off-road tyres. This results in the chainline being different, and therefore the sprocket is in a different location.
The photo below shows an XR125L countershaft on top and a CG125 ES countershaft below.
Both bikes use the Keihin PZ26 as standard, but have the following differences:
Choke lever
Idle jet size
Main jet size
The CG125 ES carb has a #90 main jet and a #35 idle jet as standard.
The XR125L carb has a #95 main jet and a #38 idle jet as standard. It also has the ability to attach a cable to the choke lever (but no cable boss for some reason).
The length of the counter shaft found in the CG125 ES varient of the JC30E engine is approximately 149 mm.
The length of the counter shaft found in the XR125L varient of the JC30E engine is approximately 160 mm.