That's because of so called "change" addresses your wallet generates automatically almost everytime you spend, and that are part of anonymity features. They can end up holding a lot of coins, and don't appear directly in the known addresses.
You can list them with "listunspent" in the debug console.
Also, they're the reason why you have to backup your wallet often, as new private keys for those change addresses are generated every time.