There have been some reports recently about devices (such as iPads) or their hosts (such as PCs or MacBooks) not showing accurate charge status. Measuring power into, or consumed from, a battery is not a precise or accurate art.
The accuracy of charge status readings is a trade-off between factors such as electronic circuit complexity, cost and battery life. For example, high accuracy means monitoring power in/out very fast and 100% of the time keeping a processor or some other intelligence-consuming power itself!
In order to determine power charge status, your device needs to know two of the following: voltage, current, resistance. Measuring these parameters is not 100% accurate and not even the battery charger voltage can be assumed to be 5V (it’s +/-5%). Also, the circuit components used to measure the values have tolerances which vary over a certain between batches and so their precise values cannot be assumed. An accuracy of 10-20% on the battery level sounds like an acceptable level. Making this more accurate is likely to create a detrimental effect on the system’s battery life as the algorithm would sample the power levels more frequently to avoid missing large, fast power spikes, etc.
In summary, some level of inaccuracy is to be expected and the design of the systems involves trade offs. This is normal and applies, not just to our chargers, but to all devices that measure charge status.