It is really stupid regardless of whether you are on Linux or Windows to have to run multiple instances. Especially since Cgminer is already set up to use all GPU's with one worker and display stats on one screen. Why would you want to have multiple screens that you have to toggle just to get stats.
Well, on Windows and even on Linux, there is this neat trick that allows you to resize windows and fit them all on one screen, it's quite amazing frankly..

Windows CPU usage can be reduced using affinity so I'm not worried about that.
Then why worry about running 3 extra processes?
Given how Cgminer seems to work now, I would think (but I do not know) it would be easy to add another cmd line option to use different login names per GPU.
Load balancing / failover, pool connections, work and login data are currently shared among one process and all GPU's enabled for that process. The command line arguments would have to be extended and the logic further complicated to detect if you are loading data for one GPU and/or multiple GPU's, for those that want to pass all this info via command-line instead of configuration files, etc... If con were to add what you ask, he would have to split all of this logic off on a per-GPU level, adding extra complexity to the miner, for something that is basically a moot point. This is probably just the tip of the iceberg. If you really want this, I'd suggest starting out with a donation.

I can think of a good reason to run one instance per GPU. If a GPU dies, you can't always restart it from within cgminer. With one GPU per instance, you can have a script checking stats (cgminer output piped to log file, or core temperature with single-core cards) for each GPU and automatically kill/restart instances of cgminer with a dead GPU.