MirageOS does not parse the code. What it does is copy the program to RAM and then hands control over to the OS to actually execute it. (In other words, MirageOS doesn't encounter the archived program, the OS does and as we know, the Z80 OSes don't handle this well :P)
Some alternatives to use would be DoorsCS7 which allows you a way to add a header to BASIC programs telling it the names of all the subprograms. DoorsCS7 will then copy not only the BASIC program to RAM, but all of the sub programs. As well, there are assembly programs that let you copy variables to archive to use. I wrote TPROG to copy a program to a temp program (a type of variable that mimics regular programs). As well, I wrote FileSyst that has some neat possibilities. I used it in several projects to create a folder for sub programs, and run them via the OPEN() command, keeping them archived.
I have thought of creating a program that scans for needed sub programs before execution and copying them to RAM accordingly. It would be tricky business. I also tried making a parser hook to automatically parse archived variables (copying progs to RAM, accessing a certain list element for lists, et cetera), but the OS doesn't allow the parser hook to intercept those :/