Why don't we just use balances? The nodes would verify that balance > 0 before validating the transaction.
Outputs neatly solve a few problems you would encounter with a balance based system.
Transactions using outputs can not be replayed cross network, multiple times, or in different situations than when they were created. In an address based system you must keep a nonce or a record of all past transactions to ensure multiple executions of one transaction does not occur. You don't have the option of re-signing a transaction with a higher miners fee, because the transactions are not atomic and can both exist in the chain at once.
Transactions using outputs can be deployed even years after they have been signed, which is incompatible with an incremented nonce.
An output based system can forget about an output once it is spent, a nonce based system must keep track of all nonces forever.
Verifying that an output exists in a block is trivial by displaying the merkle path to it, and showing the block header is part of the main chain. In an address based system this is substantially harder to prove, if not impossible given the same constraints.