I like the accounts feature. It is probably slower than a real database (though I haven't benchmarked it), but it promotes good practices and it's very easy to use once you know how it works. However, it is designed mainly for the simple case of accepting payments, and that's probably all you should use it for.
I don't have anything against the accounts feature. It's certainly a nice feature when used correctly.
Don't use it as the basis of any sort of EWallet.
And yet so many developers (including the OP) attempt to use it for exactly this purpose.
Don't allow users to withdraw BTC from your site if you're using accounts (unless you're a Bitcoin expert and you're super careful).
Exactly. If you don't know exactly how the accounts feature works, there is a tendency to make assumptions. Those assumptions tend to lead to disaster.