Little note regarding Firefox' implementation of text-wrap: balance: I've added a hint to the DevTools for the case when it doesn't apply due to the max. number of lines being exceeded. And, you can adjust the max. number of lines via the layout.css.text-wrap-balance.limit preference in about:config.
Does balance really go by the number of characters? I expected it to go by the length/width of the lines. Because that would indeed be much more expensive.