If I generate addresses on the fly for each transaction, this mean I have to save the key to each address on the server. For many small business the use shared hosting, security will be a major issue.
And even if I have an address for each transaction, one can still figure out how much I am selling. I will have to turn those coins into fiat money in some market. So I will have to transfer them to some main address...
If I generate the addresses offline, it solves the security problem. But I don't see a way to hide my income from a determined "spy".
Bitcoin may be anonymous, but its open ledgiure blockchain may eventually kill it.