Samozřejmě pokud fullstack dělá vše jeho efektivita by měla klesnout. Ví to každý ale pro mnohé je lepší radši nižší efektivita(produkce) než žádná když na frontend nikoho neseženou.
To je jen jedna část. Pak jsou tu ale jiné efekty, které jsou pro změnu ve prospěch fullstack:
1) Různé vrstvy mají různá implementační specifika, různé patterny se tam implementují různě složitě. A stává se, že třeba varianta řešení A stojí na FE 10 a na BE 5 (jednotek), zatímco varianta B na FE 6 a na BE 6. Pokud to dělají oddělení lidé, tak backendista si vybere pro něj lepší variantu, která je ale v důsledku dražší. Pokud to dělá jeden člověk, má nadhled nad celkem a může vybrat celkově levnější cestu. (Architekt tohle často nepokryje, protože on pracuje typicky na vyšší úrovni abstrakce.) Podobně jsem se dostával do situací, kdy kolegové na FE neznalí CSS něco složitě řešili a přitom se při zapojení CSS dalo vyřešit jednoduše.
2) V okamžiku, kdy neuvažuji o projektu typu "30 lidí na backend 20 lidí na frontend" ale o menších projektech, situace je jiná. Když je projekt rozsahu "jeden člověk backend, jeden člověk frontend", tak je mohu mít oddělené, ale v okamžiku, kdy jeden z nich onemocní, nebo se mu nedej bože něco stane, tak nemám zastupitelnost. Když budou oba dělat všechno (alespoň do určité míry), tak budou mít celkově možná nižší výkonnost, ale bude existovat zastupitelnost. Pokud je projekt ještě menší, že ho zvládne jen jeden člověk, tak ho buď dám fullstack, nebo tam dám dva lidi na půl úvazku, kteří ale oba budou muset proniknout do businessu a budou muset přeskakovat mezi projekty, což také není moc efektivní.
Prostě těch hledisek je víc.
P.S.: A ještě bych chtěl podotknout, že samozřejmě BE a FE mohou být ve stejném jazyku, což neefektivitu o něco snižuje. Buď v Javě, nebo naopak v Javascriptu/Typescriptu.