Well, Fatories and I needed this for our hack but I didn't actually know how to do it. So, after looking into it, as long as
bit 0 is set in the room's flag, it will use 02 or 03 for the map group, depending on what map group you're on. So how could you do this via script? Simple.
setroomflag 01
Or you could make events in the past change the ones in the present by using my custom command
setroomflago. Very easy and very powerful. Note this can indeed be used for single-tile changes because ZOLE doesn't support any tile changes (Except for map scripts). Note that the tileset must be different in the original room or you'll be using the original tileset with a different palette until you press the start menu.
Edit: I found out in order for the map to properly swap, a value must be unset and another value must be set. First off, the 6th byte in the area data must be 00 in the unswapped one. In the swapped one, it must be 01. So, what does that mean? You're gonna need a hex editor and to do a little math.
For the unswapped one: Go to address
10FBC + [unswapped area ID * 8] + 6 and make sure the byte is 0.
For the swapped one: Go to address
10FBC + [swapped area ID * 8] + 6 and make sure the byte is 1.
This means you have to use two different area IDs. Have fun.
~Lin