The way we are doing it, is not using *any* GSX code: it's the object themselves that checks the rain/snow variables using standard visibility checks. Yes, of course, we can obviously add code to GSX to add all this custom handling you are asking but, the real issue is, why rain is going on/off that way ?
Such strange behavior won't affect *just* GSX, but for example airports with wet surface checks, and I'm sure the whole airport apron and runways constantly switching from reflective to non-reflective is way more distracting than the staircases, and that's not very easy to fix as it might in GSX.