- Prestige. There are a lot of companies (especially VC funded startups) that have massively over-hired because a large headcount of high-end engineers is a signal to the market (and importantly, VCs) as to your seriousness.
- Talent denial to competitors. If you don't want anyone to catch up in a space (say, VR) you can get a long way by simply hiring the entire talent pool dry. This is however an incredibly expensive strategy that presumes you have a gargantuan amount of cashflow. I suspect this was a large part of FB's strategy, but they are no longer in a financial position to sustain it. Google has done this to a large extent for AI, and do not appear to be letting up.
- Just like code, forming new teams is easier than refactoring old teams. In big companies every part of the product feels essential (until the crisis moment, where every cut is on the table and a more sober accounting occurs), and so the default inclination in good times is to keep every team but add more teams/headcount in order to take on additional work. In bad times one is much more inclined to exchange one initiative for another, rather than simply accumulating initiatives.