Actually after I little research, this isn't the right approach after all - apparently the variables are stored on the return stack: http://www.softsynth.com/pforth/pf_ref.php#Local%20Variables% 20{%20foo%20--}.
Putting locals on the return stack is only one implementation strategy: many more are possible. Apple's OF uses a separate stack (well, sort-of a stack, anyway) for it. If you plan to use locals a lot (very very bad plan in Forth code, IMNSHO), a separate stack is most likely the cheapest way to do it (in code space, code time, developer time, and developer sanity). One reason to use locals a lot is when you compile e.g. C code to FCode; it is almost never convenient to use locals in well-designed Forth code.
The advantages of putting the locals on an existing stack all boil down to it being an existing stack: you do not have to set up a stack for it, to size that stack, to handle it in CATCH/THROW, etc.
Segher