Another thing to toss into the discussion, preferably sooner rather than later: continuations. From what I can tell, implementing continuations relies on having an arbitrary graph of "stack" frames, and garbage collecting them when they can no longer be reached. Putting continuations on top of a C-like stack looks either expensive, difficult, or both -- sure, you can always copy the entire stack whenever someone does a call/cc, but for cases where the continuation is not invoked, or in which it is used like an exception, this seems wasteful.
You could argue that they can be slow because they're not a very important language feature, and that they will rarely be used. I'm sympathetic to that point of view, having never felt the lack of continuations in my brief programming life, but if that's the way we want to go, we should at least be explicit about it. /s