GUIs just aren't interesting to create -- there's nothing challenging about creating them. For desktop apps, the normal thing to do these days isn't even to code them -- you drag and drop together a UI in something like Glade, Interface Builder, or whatever Visual Studio packages, and hook up handlers to talk to the core logic. It's mostly grunt work.
The same is true about web interfaces, of course, but they at least have hype behind them, and therefore they're picked up by trendy young coders. Plus, there's the challenge -- or, IMO, endless pain -- of actually making it work across multiple browsers.
There is certainly an art to making a good, usable interface, but it's not a typical programmer's challenge, and writing a UI by hand is simply a pain in the ass. It sucks to do the stupid connections and packing if you don't have a drag and drop layout tool. And once you have that, you start leaving the programmer's domain, and into the designer's domain.
Note, I'm only talking about interfaces. The logic behind them can be anything, but it's the same logic with a web or desktop frontend.
I think it's just that once the shine wore off of the "hey, I can make buttons!" thing, the highly motivated programmers realized that UI design wasn't something that they wanted to focus on -- it's better left to designers (in theory at least -- im reality it's probably left to lowly grunt programmers) who can make the UI with drag and drop GUI builders, leaving them to work on interesting technical challenges. Making a GUI tends to be incidental to the core of the problem. I suspect that if it wasn't for the shine factor in web apps, it would have the exact same sort of apathy that you see in most programmers about desktop GUIs.