I see the only purpose of interval flushing to mirc.ini being to preserve changes that the next ON START needs to see, and to not see things it shouldn't.
That does seem to be a reasonable assumption.
However, if you look back through
versions.txt, you can see that /set -uN, /saveini, and $var() were all added at different times. So there was a time when scripters may have wanted access to the list of all active variables and could only find them in the variables file. That is a long time ago though.
On the other hand, even today, a DLL developer could choose to trigger /saveini and then read the variables file to retrieve a list of the currently active variables. It may not be good coding, or make great sense, but scripters often use the scripting language in ways that I do not expect.
I agree with your suggestion - it would only take a minute to change the behaviour - but considering it has been in place for twenty years...