You need to understand something about rendering.
It is a sort of reinterpretation. The same as a musical piece, which had the instructions to be played in a partiture, but it is reinterpreted by the artist.
In this case, every browser takes the instructions given on an SVG file and reinterpret it. They render it, they do not just present it.
So different browsers have different render engines and reinterpret different stuff in different manners.
Some can alias or antialias things, some can just make a quick render, some can smooth things in a subpixel level.
You can not control that. That is given by the render engine and the settings of the user, if the case.
What is happening in the small version is that. Your render engine is making an aliased rendering.
Instead of watching a line of 1.5 pixels width (which you can not have) you are seeing let's say a 2px line.
Some other render engine or method could make a 1 px line and another line of another tone of gray to simulate the 1/2 pixel.
What you can try is to either to leave the text as text or to convert it to curves. Hoping that most render engines interpret one method better than the other.