Margins need to be as razor-thin as possible in order to complete, and payroll is often one of the largest expenses.
As a result there will be a significant group of jobs by which little experience is required and turnover may be high - but since the jobs don’t require a lot of skill, the high turnover rate is not an issue.
For this job group, there is no reason to improve the working conditions, as, from the outset - these workers are never expected to stay for long.
An individual like a Junior Software Developer working on a large codebase that‘s existed for time, gets more valuable to the employer over the years, as their knowledge of that company’s particular codebase grows, and how the workflow of their company functions.
A Junior developer, then, has a career path - as they demonstrate their knowledge in the codebase they move from Junior to Intermediate to Senior and thusly by the time they may reach management they have demonstrated an aptitude in it.