Windows is silly for running its Windowing system in kernel mode while the UNIX X-window system runs in user mode.
Indeed, but there's a good reason for it, too. Well, kinda. The issue is system call latency. The windows architecture is actually designed so that all the subsystems are separate processes and couldn't crash the kernel, but there's a big issue with it. Since the communication mechanism between application and the subsystem is a plain client/server model, it means that both are scheduled and threaded normally. The client makes a request, to which the subsystem must respond in a different process, and then return operation back to the first process. Since windows quantum size is typically 25 milliseconds, under 100% cpu load this would be a serious issue, as all system calls could take 50 milliseconds to complete. This isn't acceptable.
In the original NT design, there was a hack to implement it. Two special system interrupts to do ordered fashion context switching, to call another process and then return, without scheduling. However, it was a hack, and MS wanted to replace it. So, portions of different parts of win32 subsystem got moved into kernel, for faster access. In my opinion, this was a bad choice, at least in hindsight. Modern systems are already so fast that 25ms quantums are insanely long, especially for workstation use. I'd rather have 1ms quantums or even shorter for desktop systems, and possibly a different kind of RPC mechanism for controlled context switching.
So, it's running in kernel for performance reasons. Which IMO could be better solved in other ways.