I just use the account functionality to separate, but symlinks would work too (as mentioned above) and are also easy to set-up. Or perhaps look into using something like sx tools to perform the transactions through bitcoind rather than bitcoind itself.
There are a few reasons not use accounts, but mainly this one:
The accounts code does not scale up to thousands of accounts with tens of thousands of transactions, because by-account (and by-account-by-time) indices are not implemented. So many operations (like computing an account balance) require accessing every wallet transaction.
https://en.bitcoin.it/wiki/Accounts_explained#Account_WeaknessesPersonally I don't think libbitcoin/obelisk/sx is production ready, but I respect the work genjix is doing.