I am a decent command blocker, and I do use section signs whenever I can't use JSON text and would like/need color. I mainly do this in applications such as custom item names, scoreboard team prefixes, etc. To do so, I use the Server Console to give me a Command Block with section signs, because the Server Command prompt allows section signs.
However, running an excessive amount of section signs with no valid formatting character after them can lead to some weird glitches; such as this one exceeding maximum chat window boundaries. If you would like any more information, feel free to comment below!
As noted above, do NOT use JSON escape codes; they must be sent as section signs (not escape codes) to the client. Instead, use the sign above (as the \u00A7 is actually converted into a section sign and sent as a section sign to the client, instead of \u00A7).
It looks like the method FontRenderer.getCharWidth(char) is causing problems because it returns -1 for the section sign. But I am not sure if this is even worth fixing since as far as I know the goal is to switch everything to text components at some point.
The "r"s come from the "§r" which is appended to every text component, however "§§r" is then processed as invalid formatting resetting style and "r".