1. They followed design principles too well. Strong constraints: check. Simplicity: check. But Metro is too constrained, too systematical. App designers are left with too few breathing space. Apps look all the same and feel too cold. I want my gradients back.
2. It doesn't look that good on big screens. For instance, launch screens of Windows 8 apps : it's too minimalistic to have big white icons on a flat monochrome background.
I think Metro has a lot of growing to do, but it seems like a language that could be very interesting down the road.
In microsofts case it's the "metro" style, with lots of bright (almost cartoony) colors, big blocks filled with lots of light-weight, sans-serif fonts.
For example the following either don't exist or are half-baked:
WCF (WsHttpBinding in particular), WWF (entirely which we use for WCF correlation), EF (not a biggy but would be nice), WPF (the best part of .Net), MEF (buggy and missing bits).
If I wanted cross platform, I'd go Java.