Custom Totals are a great feature of Magento. I do believe we can improve their implementation and reduce overall complexity by keeping custom totals in separate dedicated database tables similar to how we store line items.
With the current structure to add a new custom total to cover base and order currency plus tax, at my last count, one has to add:
1.) 13 columns to table sales/order
2.) 4 columns to sales/invoice
3.) 4 columns to sales/creditmemo
Not everyone gets this right including for example Enterprise custom totals:
this would help a lot with the aim to
a.) remove duplication of efforts (every custom total shouldn't need to add all these columns)
b.) take away complexity of having to set up the database to reduce chances for errors
Additionally to keep track of tax I think these should be linked through to the same table that we use to keep track of taxed items to allow for multiple taxes on the totals (and be able to reconstruct this later). If we don't link to the tax table we should at least add tax_percentage.