CSS selectors are a good thing. They are massively optimized and built in to the browsers and they run blazingly fast.
But the more prominent problem is that XPath still has some features which aren't easily replaced by equivalent CSS selector expressions:
//li[./a]giving you all li's with a inside, or
li[.//a]giving you all li elements that have a as a child or descendant.
Also see the related Stack Overflow answer by Jim Evans.