It seems like you can generate as many as you want bitcoin addresses with the Bitcoin client.
Yup.
Isn't there a limit?
The client still uses BDB for the wallet.dat. The previous versions would bog down after the wallet held several thousand addresses, but I'm not sure if the move to LevelDB for the blockchain in v0.8 made that problem go away (at least to where the sluggishness wouldn't reappear even after a level much much higher number of addresses).
Are there any potential problems with generating too many?
To your node, yes -- sluggishness. To the Bitcoin network? Nope.
How do they avoid the chance to people to generate the same address?
Maths and keyspace. i.e., There's no reason to worry about it ever happening.
-
http://bitcointalk.org/index.php?topic=104461.msg1143851#msg1143851