The addresses are valid forever unless you lose your wallet. The only disadvantage is that the address receiving a transaction is visible to all nodes. It is easy to automatically generate a new address each time a page is refreshed on a donation page using the JSON RPC interface.
Managing all those addresses in your wallet is a real PITA though. I wish there was some sorting ability in the address book as well as a method to "hide" addresses that you don't actively use.
I really should tear apart the client code and write a new app [I would use WPF, but it would target Windows only AND it would steal a little from the GPU if you are running the app on a machine that you are also doing mining on.