I'm not long into dealing with (learning) Roku, so pardon any non-applicable points.
1. Your initscreenstack() in manager.brs doesn't appear to be called, so m.scenegroup isn't instanced.
2. Is the abstraction of [manager.xml/brs] taking on a controlling duty, rather than the [mainscene.xml/brs], worth it?
2b. Don't include the extra <script> for manager.brs in your mainscene.xml. When you want .brs scripts included by multiple components, make them separate .brs files not tied to any components. For example: if component.brs is serving as the script init() backing to component.xml, then don't include that in differentcomponent.xml, otherwise it leads to confusion with unclear context; make a separate shared.brs file.
2c. Then in manager.brs you can change initscreentstack() to init() and it won't conflict.
2d. Then in mainscene.brs at handling the back button, call your interface function for closeScreen: m.manager.callFunc("closeScreen"), as you did with showScreen, instead of closeScreen().
3. The mainscene.brs OnKeyEvent doesn't return the result. Though it does in your commented-out version.