well it's historically been because 'extend the native widget' isn't possible with css. WebComponents change that a little bit with well-scoped css, but that's still a very javascripty solution.
I don’t think telling developers “just do it right” is a scalable solution, the platform has to make the least effort path the one that works best.