Hm, that's assuming the merchant keeps those accounts empty right? I think a workaround would be that as long as the merchant plans to use that account for his customers, it should never be empty (he asks the client to keep at least 0.01 NXT in there). If the client empties out his account, then the merchant simply generates a new one for the client to use next time and tells him to not use the old one because the client emptied it out.
I think we should seriously consider forcing this behavior so we can prune public keys of accounts with no balance and no aliases
Speaking of aliases, another way to "preserve" your account would be simply registering an alias. You have to send out a transaction anyways to get your public key, so if you're interested in making some "back-up" empty accounts, you just register an alias as you would have anyways. In the merchant example, the merchant simply just makes up an alias for the customer (maybe an ID #) on that account, and the account won't be erased during pruning.