Normal. The client only looks for new transactions. The reason why is an old wallet could have hundreds (maybe thousands) of addresses and those addresses could be involved in transactions back to block 1 (if your are Satoshi).
To query the entire blockchain every single time you start would be massive amount of work.
SO the client remembers what it has last seen. If the client knows your balance is 20 BTC @ block 100 and you turn it off, when you turn it on it downloads block 101 to 105. It only needs to look for transactions in blocks 101 to 105. Right?
When you switch wallets that confuses the client. You need to do a rescan to force it to check blocks it considers "already checked".
Thanks for this explanation. I had the same problem as the OP when I first started because I was experimenting sending between different wallets. I did find the recommendation on doing a -rescan, but didn't get the whole explanation as to why switching wallets caused problems.
"bitcoins not showing up in wallet" <---(for the search engines)