I am not referring to "crunch time" where you realize everything is broken and your schedule was unrealistic; rather, many projects I have participated in have an escalating work load as you near release, because a lot of the work simply cannot be done before previous stages are completed.
Unless you are a large entity that can heavily "pipeline" by running 10 or 20 projects at once, and shuffle people around as a project's workload changes, to avoid ever working overtime you'd need to either have to hire too many employees, or hire/fire regularly. Not entirely dissimilar to trying to balance a server cluster with load spikes.