Most designers I know who can code reach for a component library first and CSS second. I do the opposite, and it's not a purity thing. It's that the moments I actually need to be precise are exactly the moments a component library's defaults get in the way.
The actual reason
Utility classes and component libraries are fast for the 80% of a screen that looks like every other screen. But the 20% that makes a product feel considered (the exact easing on a hover state, the one place type should break the grid on purpose) is where I want direct control, not an abstraction between me and the browser.
Where I draw the line
I still use Tailwind for the 80%. I still reach for a component library when the client needs velocity more than polish. This isn't a case against tools. It's a case for knowing which 20% of a given screen is worth writing by hand, and not pretending that number is zero.