Based on what I know, there are two main reasons to do this:
1) It is safer, the OS stack is protected such that other process can't corrupt it. Which is easily done with bad programming.
2) The OS has access directly to kernel functions, which are not available to other process. It can't thus put them on the stack or else there would be some access violation.
In ancient times they had no statistics so they had to fall back on lies