Basically what he did is the limited stack algorithm I suggested. That's valid. There are other options.
Since you will always introduce another level of indirection, there's always a speed penalty.
OTOH: look at the compiler code for case with strings

This is a solvable issue,provided a case loop is optimized in sorted order and continue is allowed,.
That's nothing new in compiler construction.
But if then else comes very very close to that too. So it is notational candy anyway. And candy is bad for your teeth.