The problem with this sort of categorization is that it's trivial to learn another framework or language for a generalist. It takes a week or two to get up to speed in a ${buzzword} while it takes much longer to become proficient in programming fundamentals. Things like object oriented design, algorithms, systems design, architectural patterns, debugging, etc.
In fact, it is likely that a strong generalist can outperform say a "Ruby ninja." A strong generalist can create reusuable modules that are easy to understand, maintain, test, and extend. Meanwhile, the ability to use a slightly shorter syntax in Ruby provides minimal benefits.
I suspect the reason why this categorization exists is because it's unnerving to think that a generalist can outperform a specialist. It's similar to how the theory of multiple intelligences was conceived because general intelligence is scary. Regardless, it's a silly idea and it would be great if engineering orgs can realize the potential of generalists.