The purpose of the company is to make money for shareholders, not to employ people. By definition. If laying off employees can increase profits, it is necessary.
Lay-offs only look hypocritical to people who are confusing for-profit companies with cooperatives. FWIW, personally, I like the idea of cooperative, but it seems otherwise rather unpopular.
Regarding predictable patterns, note that managers are incentivized to do busy work rather than report that software is "done". E.g. if you're a manager and you know that you already implemented all reasonable features and only need minor maintenance, would you report that to executives, risking your job? Or would you try (perhaps subconsciously) make some bullshit excuse: "we need such and such features to boost our revenue, also we need to migrate to <new-framework> to increase performance to be competitive, so yeah, we need more people"? It might not even seem an excuse because it's what everyone does -- all managers are like that.