I believe this is not the popular stance but I prefer embedded hacks such as * and _ in the style sheet rather than using separate IE specific style sheets. At first I tried separate style sheets but I found the scope of having the styles for the same elements span multiple files to be painful to maintain. It was not obvious while changing a style in the primary style sheet that I also had a corresponding style in one of the IE specific style sheets. Often time these style changes where so minor such as a minor adjustment of the padding that the extra time to test it in every browser seemed excessive and thus did not always happen.
If the hack was just included directly in the primary style sheet however, it would have been obvious that the style for IE 6 needed to be adjusted and tested as well. I can hear people saying you should test every style change in all of your supported browsers, but in the real world I find this stance unrealistic, and I do not see all of the developers on the team following through with it.
I understand that including the hacks makes your CSS not validate but I have found that I can quickly scan the validation results and ignore the errors regarding those hacks. In my opinion I would prefer to have a little more work interpreting the validation results than dealing with the site being rendered incorrectly in IE 6. I have also read elsewhere where people will not do hacks or separate style sheets but instead adjust/simplify the design so it will work for all browsers. Unfortunately the developer implementing the design does not always have this option when they are not in charge of the design. Plus the amount of hours I have struggled to get minor padding issues to work in all browsers just to avoid a hack nin hindsight seems pretty wasteful.
I am interested in others thoughts and justifications for their stances on this paradigm.