Take the case of a product that consists of a back end API, a single page web app, and a mobile app. Who do you want designing the API? I think ideally the answer is someone who has some experience with all the systems involved.
I've been on teams where the back end guys designed the data model and the API and forced the front end to conform to that. And I've been on teams where the front end team ran the show--in my opinion neither situation is optimal.
> this means that an expert (someone who is specialized) is always able to crush a FSDev in his own field of expertise. So, FSDevs are always the rookies in all fields, compared to specialized devs.
I think there's a few different things to say here. First, I think most teams aren't really made up of experts. Mostly because most teams can't afford to be made up of experts, and because most teams probably don't need that many experts.
Second, there is a huge amount of overlap in most developer roles, so a lot of experience in one role transitions very well to other roles.
Third, most good generalist developers probably have some field that they actually are experts in. You've probably heard the term "T shaped developers". Their field of expertise might even be something like domain knowledge or management.
And finally, for most developers, there is a limit to how specialized you can become. To have along successful career in software development you can't afford to become completely specialized. If you plan on writing software for 40 years or more, you're probably not going to be a Rails specialist for the entire time.
In the end, I think a good team requires a decent mix of specialists and generalists to function well.
*usually misattributed to Stalin
I think you are starting with a false premise: IME, the best developers in any narrow area also tend to be the ones drawing on broader experience bases in terms of application domains, languages, and technology stacks.