The reason for a single UI thread is very simple. The use of a single thread results in no problem in synchronizing any of the message processing involved in presenting the UI. It is far from obvious that there is any problem with this situation as long as an application does not try to do some significant synchronous background processing on the UI thread. It is also the case that .net provides functionality that makes the use of a background thread easy for background processing in either a WinForms or a WPF environment. In practice with WPF it is easy to use three threads that could be running on three processors for the UI. Those threads include the standard UI thread, the render thread, and a background worker thread. Charles can rant on all he wants about the wonders of multicore. But it may take him a while to find the client workload that actually has any real requirement for more than two or three cores.
As far as Vista stability goes, it has been very good since I started using it during the RC0. I have had two or three blue screens in total during that time.