At a minimum you would need to store the account # (64 bits) plus the public key (256 bits) plus the balance (64 bits?) which would be 384 bits or 48 bytes per account.
Account id is a sha of public key. It doesn't need to be stored, except as an optimization.
Since there are less balances (44721 max) than accounts its better to have balances with accounts, not accounts with balances.
If I'm understanding this right, that means that if an otherwise active account gets a zero balance that carries over the blockchain pruning event, then the public key will be erased from the blockchain? Or am I misunderstanding?