I've been considering these choices a lot. In my own career, I've made a conscious choice to pursue lots of different things that I found interesting, but I've become a generalist, pretty good at lots of different things but lacking the deep domain knowledge in any one of them that a specialist gains. You seem to be arguing that specialists should not exist, everyone should go for broad rather than deep. I think there's a place for both, and becoming a specialist often requires the discipline to stay focused and not pursue every interest and curiosity that rears it's distracting head.
I think there's value in a programmer knowing the whole stack, from language APIs to hardware implementations, and being able to understand the consequences of every line of code. But time is finite and someone at the beginning of their careers must make choices on where to build their expertise.