That's not true. The client uses a new address from the keypool whenever payment is received to the currently selected address. So if the user receives 101 payments all to the same address, but he keeps reselecting that address so it is displayed in "Your Bitcoin Address", the keypool will be exhausted. This should be added to the list.
How would using the same address 100 times exhaust 100 unique addresses from the keypool?
Do I need to repeat myself? The client "generates a new address" (or, more technically, takes an address from the keypool and adds it to your addressbook) whenever a transaction is received into the address currently selected (the one displayed as "Your Bitcoin Address"). If you receive 100 payments into the same address, and after each time you go back to the address book and select this address again, then each time a new address will be generated, and eventually new addresses which were not in the backup's keypool will be created.
We can try it if you want. Select some address from your addressbook so it is displayed. Tell me what it is and I'll send a token amount to it. Watch as a new address is automagically generated.
I understand it changes the displayed address but I assumed (like not a good idea) that it would simply pull an "unused one" from the address not keep exausting the keypool for no reasons. You likely are right but that seems like a foolish decision as it uses up keypool much quicker than is necessary.
How I thought it worked:1) I have address A in my wallet, B-Z in the keypool. I make a backup.
2) I receive funds at address A, wallet moves address B from keypool to wallet (wallet displays address B as "your address").
3) I receive funds at address A, wallet keeps address B listed as "your address") <- there is no reason for a new address as B hasn't been used.
...
4) I receive funds at address A, allet keeps address B listed as "your address") <- there is no reason for a new address as B hasn't been used.
5) Keypool still has address C-Z which are in backup.
How (if I am understanding your correctly) you say it works:1) I have address A in my wallet, B-Z in the keypool. I make a backup.
2) I receive funds at address A, wallet moves address B from keypool to wallet (wallet displays address B as "your address").
3) I receive funds at address A, wallet moves address C from keypool to wallet (wallet displays address B as "your address").
...
4) I receive funds at address A, wallet moves address Z from keypool to wallet (wallet displays address Z as "your address").
5) Keypool no longer has any addresses that are in the backup.
That seems foolish and rapid way to exhaust the keypool. If you have tested it and confirmed the new displayed "your address" is pulled from keypool each time that seems non-optimal and is more likely to lead to "stale" backups. It also serves no real purpose. The purpose is to give the user a "new" address each time but if "B" (in my examples) has never been used (because I keep using A) then B is "new" there is no reason to pull C-Z and exhaust the keypool.