I know that the way the game runs Mario Bros. is actually by reseting the game with a value in a specific location.
This is the routine that resets the game into Mario Bros. in the US version. I took the liberty of commenting it up.
08057084: 4A07 ldr r2, [$080570A4]
08057086: 79D1 ldrb r1, [r2, #7] ; Load byte from 0x203FFFF
08057088: 2004 mov r0, #4
0805708A: 4240 neg r0, r0
0805708C: 4008 and r0, r1 ; Clear bottom two bits
0805708E: 2101 mov r1, #1
08057090: 4308 orr r0, r1 ; Set bottom bit
08057092: 71D0 strb r0, [r2, #7] ; Store back to 0x203FFFF
08057094: 4904 ldr r1, [$080570A8]
08057096: 2000 mov r0, #0
08057098: 8008 strh r0, [r1, #0] ; Store 16-bit value 0x0000 to 0x2000050
0805709A: 2040 mov r0, #64
0805709C: F183 FB14 bl $081DA6C8
---
081DA6C8: 4B04 ldr r3, [$081DA6DC]
081DA6CA: 2200 mov r2, #0
081DA6CC: 701A strb r2, [r3, #0] ; Disable platform interrupts
081DA6CE: 4B04 ldr r3, [$081DA6E0]
081DA6D0: 2200 mov r2, #0
081DA6D2: 701A strb r2, [r3, #0] ; Acknowledge pending interrupts
081DA6D4: 3BFA sub r3, #250
081DA6D6: 469D mov sp, r3 ; Reset stack pointer
081DA6D8: DF01 swi #1 ; Reset sound registers
081DA6DA: DF00 swi #0 ; Reset game
Experimenting a bit, the value at 0x203FFFF seems to be crucial. When the routine starts, the value of the bottom bits is 0b00. Thus, when it ends, it's 0b01. However, if I force it to be 0b00 or 0b11 afterwards, it restarts back into Mario & Luigi. This byte appears to be a bitfield that's written to somewhat frequently, and the bottom bit says "Boot into Mario Bros." Setting it to 0b10, oddly, reboots back into the menu, skipping the intro.