Why does Bitcoin-Qt use hidden private addresses? As I found out from this question default wallet contains 100 private keys but only makes one visible.

But what I don't understand is why Bitcoin using those "hidden" addresses? I've been using my main address ABCDE and after some point I've noticed that my balance is spread on different private addresses which I can see in "Receive coins" tab. Why couldn't it just use my main address?
This is done so as to ensure you have all of your keys backed up. BitcoinQT uses a new address for each transaction - taking them from the pool of unused addresses. However, as there is a pool of those addresses always kept in the file, even if you back it up every 100 transactions, you can still recover all of your money. If you would only be keeping the addresses you use and geenrate new ones on the fly, you would need to back them up each time you send coins.

The main client does not reuse the same addresses to increase your privacy - one would not be able to tell who you would be sending money to, and which address you would own. It's privacy by default, rather than on demand.