Anybody can vomit text into a file, rename it ".html", and have it rendered to something by a web browser. When they try the same thing with XHTML, they receive an error page. Even otherwise reasonable programmers, who would not expect invalid code to be parsed by a compiler, blithely contribute to the spread of invalid HTML. For example, the front page of news.yc fails with 143 errors:
A second factor is that IE does not support XHTML. Any features that rely on XHTML support (inline SVG, MathML, custom attributes, &c) are unavailable in a "portable" application. IE 6 is still a very large chunk of the market, especially among non-technical users, so relying on any features it doesn't support is iffy from a business perspective.