In short, the naive "account" approach is totally insecure. Fixing the insecurity without using a TXO model it seems people end up creating something which is more complex, less parallizable, and less flexible than the txout model.
For example, how do you prevent someone from just resending a transaction to duplicate a payment? The naive fix of checking each new transaction against every tx in history has horrible performance and scalablity and isn't a realistic option. Using a sequence number kills concurrency (e.g. if you make two transactions and someone hears the later one first, it needs to block the first; as well as concurrency in validation) and has the overhead of tracking sequence numbers.
Moreover, systems like Bitcoin were designed to use single use addresses for both privacy and efficient metadata-linking, like how do you know which invoice was paid?-- by seeing which of your addresses was paid. If you don't reuse addresses any potential benefit of the account model goes away and all you get are the costs.
1
possible duplicate of Can Bitcoin-Qt be configured to trim the blockchain?
– Nate Eldredge – 2014-07-30T16:31:06.923@NateEldredge I'm not asking about blockchain trimming, I'm asking about the original decision to implement this type of database altogether – pinhead – 2014-07-30T17:16:08.030
This is an excellent question and something I have been wondering myself. Banks don't store the serial numbers of the notes when they transfer money from one account to another - in fact no notes are transferred. So why does Bitcoin store data to this level of detail? It really seems unnecessary and a perf hit to maintain the database of UTXOs – morpheus – 2019-03-28T16:56:20.803