The problem with MQX is that it wants to take ownership of the vector table, while other real time operating system take a much less intrusive approach (e.g. FreeRTOS). The FSL USB Stack itself has no dependency on the RTOS, except that in my implementation I'm using the thread save FreeRTOS malloc() instead of the non-thread safe library one (used by MQXLite).
Be free to use the bare metal version of the USB stack. But I'm wondering why you need MQXLite? Would bare metal or FreeRTOS not do what you need.
For MQX, you pretty much need the drivers and stack for MQX, while with an RTOS like FreeRTOS you can use any kind of drivers (either made for an RTOS or not). It is basically a design decision to take.
As for the Shell stack: yes, you need to give it enough stack, depending on what else you are using, and counting in the interrupt stack size.
I hope that helps,
Erich