I don't really get the point of this. As far as I can tell, the code is doing the same thing as before but has become (at least to me) much harder to understand.
The point is to demonstrate the general truth that any method with a single recursion can be turned into a loop by making a series of small, safe program transformations. It is not intended to be a demonstration of a technique for writing more understandable code.
If the argument to the original function is too large, the function runs out of stack space for the recursion. The function at the end of the post handles much larger arguments.
The presentation is very complicated, though.
In the end we still have a stack of afters though no?
Yes, and have to go through and evaluate them. But they are less memory limited than the stack.