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. While saveini might deal with hundreds of settings, I don't think the other settings are things written to mirc.ini in a way that a crash could make ON START act upon things it shouldn't. It's not like ON START loads the online timer value from mirc.ini while depending on ON EXIT to clear it to zero.

The different implementation you speak of, that would be changing the way things happen during ON START after both normal exits and crashes, and might be a reason to create a new switch for that behavior for just those variables. I'm not seeing how it breaks a script if temp globals are no longer morphed into permanent globals after a crash.

That new switch would also need to preserve other settings like /inc -c or the -z switch, for which there's not a current $var().prop to know them. It would need to be kept in a different file instead of the same .ini under a different [section], due to people saving their vars.ini to vars.dat where it no longer has [sections].