Yes all true, but it has a place. If you need scratch memory allocated dynamically it can be quite convenient. For example if I'm doing a bunch of matrix operations, or even a bunch of rotations using quaternions for graphics applications, I'd like to be able to allocate some temp memory of small but possibly unknown size; use it for my calculations and then discard it.
I suppose also, if you want to get a little more sophisticated you can try to increase your stack size. I know how to do that in assembly language, but I'm not sure about the various C compilers. Microsoft no doubt has some pragmas that support it and maybe gcc does to. Unfortunately MS has decided in recent versions of their compilers that inline assembly is simply not necessary any more.