You rarely ever see websites with a UI that has the same skin as the operating system. But, desktop application rarely ever change skins. Why do custom-skins work so well for webpages but not for desktop applications?
I think that is an historic thing, newer desktop apps are actually very likely to have a custom skin.
I think the reasons are:
Web browser's default style is useless (it's ugly and not very usable) and differs between browsers so you can't actually use it.
Web sites (and as an extension web apps) are much more likely to have an graphic designer involved in the development process than desktop apps (this is probably no longer true).
Desktop app's controls are extremely hard to re-skin (with newer platforms this is definitely no longer true)
I personally develop and sell a desktop app with a custom UI.
The reason is web pages start out as a blank white rectangle. There are actually default styles that each browser implements (thus the prevalence of a reset.css in many sites). I only have experience developing WinForms and WPF applications (on windows), so it is from that point of view that my answer comes. WinForms is notoriously hard to skin, because beyond simple settings the controls that windows provides are not skin-able unless you override the OnPaint() event and write your own rendering code. this is significantly harder than producing a css file that changes the background color and font. quickly changing these properties on traditional WinForms globally is a major PITA. The ability to write a "reset.css" for WinForms does not exist, thus many developers decided to stick with plain old windows default control color.
Websites have custom looks because, as others have answered, they pretty much have to.
Desktop apps, on the other hand, are most likely to conform to the OS "skin" (as you put it) because the makers of said OS provide UI guidelines - recommendations on how you make your apps for their platform. Windows has them, OSX has them, and most of the mobile platforms have them as well (Windows Phone, iOS and Android for sure). I'm not sure if Linux has any guidelines because I haven't built Linux apps, but based on the completely disparate interfaces I've seen in just about every Linux app I use, I would guess that they do not have guidelines, at least not at the level of detail as other OS's.
Custom skins work well for web applications because...
- It is the convention for that context
- There isn't a better alternative (browser incompatibilities being what they are)
- Web-based UI tends to be sparse and simple
- Users are often potential customers, so marketing has increased importance
But custom skins do not work well in general because...
- They destroy consistency
- Most of them suck (we can't all afford graphic designers)
- They may increase development (not just design!) costs
- Complete, bug-free, self-consistent, usable, aesthetically pleasing styles (and custom widgets) are difficult to create (see 1-3)
- Web applications need to provide consistent branding between different operating systems.
- Since most webapps are still loosely CRUD-based, they can afford to customise their UIs more without getting in the way.
- Desktop apps are generally used for longer periods of time, and for more advanced tasks (e.g. development tools, video editing software), for that, custom skins just get in the way and branding is more likely to alienate the user. They also often need to behave similarly to competitors to make it easier for users to transition from another application. Desktop applications with simpler UIs (such as media players) are more likely to use/support custom skins.
Having designed extensively for both at the enterprise-level the answer is simple - cost. If executives were shown demos of desktop products with a heavily customized look and feel and told the cost was minimal most would scramble to find a way to insert the corporate colors/logo/fonts/etc. anywhere they could. There are a myriad of development/ux reasons for and against this disparity, but ultimately it's a matter of cost.
A desktop application is mainly about providing some functionality. While a a web page does branding, provide information and functionality. I think you can compare it to say operating the functions on a car. You want things to work and look in as standard fashion as possible. This corresponds to a desktop app. While a web page is more like a magazine where you want to create an attractive layout, pictures etc to entice the reader.
Now these two worlds are merging in a way, web pages are increasingly getting more app like functionality but they are still stuck in the "magazine" thinking way and unlike the desktop there is nothing built into the browser or web specifications that make web apps have a standard look and feel.
I would say the problem is that web apps are still very immature compared to desktop apps.