With Windows, a lot of this is down to software using AppData\(Remote|Local|LocalLow) correctly. Named differently in NT but conceptually it was there all along. The problem back then was that, since 9x didn't have this separation, relatively few apps bothered to do it right.
Later I saw some Citrix setups which would load the applications from the server. That also worked pretty OK.
With Windows you definitely had all the options to make this work in the late 90s.