An interactive Forth is even harder on PIC16 and below due to the inability to execute code from RAM and inability to call a ROM function via a pointer. You could do token-threaded with a jump table for ROM routines. The poor support for stacks in RAM and the inaccessible 8 level function call stack in hardware are also very limiting. Maybe a fully-interpreted language is in fact the best you can do there.
Parking the Forth aspect to one side (I was once a Forth programmer in the late 1980s, so I'm not a Luddite regarding Forth), your comments on PIC16 is based on pretty old devices. In the "enhanced mid-range" devices (all those introduced over the past 15 years or so), the hardware stack is accessible via STKPTR, TOSL and TOSH registers, and is 16 levels deep. The hardware stack's not meant for variables, it's only intended for return addresses. I've never encountered a scenario where I've run out of hardware stack in these devices, and as the XC8 compiler tracks calls statically, it will tell you at compile time anyway.
ROM function pointers are definitely not a problem, I use them extensively to implement state machines for example.
It's enough to be able to write a simple RTOS, although I will accept that when I attempted a port of FreeRTOS to PIC16 about three years ago, it did give the XC8 C compiler some headaches that were insurmountable where XC8 became confused between the use of linear and bank addressed RAM. The way to resolve it was to throw away FreeRTOS. Around the same time, I did successfully port FreeRTOS to the newer generation PIC18s with XC8: PIC18s still have similar architectural restrictions to PIC16 in terms of banked RAM, but as the banks and common address areas are larger the compiler didn't confuse itself.
Irrespective, on the subject at hand, I'm rather confused by the new Qualcomm Arduino board, it just seems to confuse things, it doesn't know what it is. Imagine being a noob and being presented with all of this, it'll be overwhelming.