I disagree that this is a bug or misfeature in the Haskell Platform. The problem is caused by a quirk in how Windows works.
There are a few other options I didn't mention. One is to delete the global entry from the 'system' path variable and insert it into the 'user' path variable somewhere after the "%appdata%\cabal\bin" entry. The downside here is that other user accounts will be affected. Another option is to use a custom shortcut or execute a batch script which manually sets PATH variables as needed. This is the method I use personally.