If balances are calculated on the fly by offsetting all the transactions flowing in and out of a public address, will this degrade the performance of calculating such balances in years to come, i.e. when large volumes of transaction history have accumulated? How many transactions would result in a noticeable drop in performance? or is the threshold so high that it's not likely ever to be reached by the vast majority?
The balance is calculated from something called UTXO, this is a list of unspent coins, it is created on blockchain rescans and updated on receiving of new blocks. It is therefore not dependent on transaction history size but only all current available coins fragmentation.
There are performance issues with this solution also, but they are been worked on...
The calculation of the balance of a public address is not part of transaction validation. In order for a transaction to be considered valid, it must redeem unspent transaction outputs. Transaction outputs are always redeemed entirely, so there is no need to calculate the balance of a public address, only to check that these outputs have not been redeemed (spent) before.
So the scalability of balance calculation is not an issue that affects the processing of payments. That said, each bitcoin node still must remember the list of unspent transaction outputs.