Unfortunately, this isn't true. When everything is running on a single processor, synchronization (basically, getting your threads to behave in a predictable manner) becomes a whole lot easier. Just google "multiprocessor synchronization" and see for yourself. (The first result is the homepage of a university course devoted to the subject. That should say something...)
On top of this, multi-threaded programming is pretty damn hard in the first place. As one of my professors said: It's really easy to write fast multithreaded code. It's also really easy to write correct multithreaded code. Unfortunately, it's extremely difficult to write multithreaded code that is simultaneously correct and fast.
In my opinion, what Gabe Newell said isn't really too much of an exaggeration. I have a bit more faith that people will figure it out, but I don't think he's overstating the severity of the problem. I agree that he's probably feeling it particularly keenly because of Source, but really, it's everybody's problem. (Even, eventually, the gamers...)
I shall now retreat to my ivory treehouse from whence I came... And continue to lurk.