Raymond Chen posted an explaination of this recently.
Its mostly because Add/Remove programs uses mostly guesswork to determine this information when there is not enough information provided by the installer to work it out properly.

How does Add/Remove Programs get the size and other information?

Its also the reason why Add/Remove takes so long to load when you have lots of programs installed.