Hey, I've been working on a split-screen for the last few days, but I've had some problems centering the second viewport. Would you mind if I use your script? ;p
Anyway, for the switching problem - so far I've only got an idea of doing this and haven't got the time to test it, but here it goes. First thing would be the sizes and coordinates of Spritesets - this could be done with a variable that could be changed in the game. Once it's changed I'd call a script $scene = Scene_Map.new so the Spritesets would be reinitialized with new values. alternate way is to create a copy of Scene_Map with only one Spriteset initialized, though it would also require changing its dimensions.
edit: OK, this didn't really worked. Half of it. I did make it work though. Here's how it's running:
I've created a copy of Game_Map (Game_Map2) with original parameters for one spriteset. I've made one more copy of Spriteset, and Game_Player, and a copy of Scene_Map, they have parameters like originals. In the title screen you can choose the number of players. If it's "1" then $game_player = Game_Player3.new (it's the original Game_Player class) and Scene_Map3 is being run (original Scene_Map but with Spriteset3). If you choose "2" players the game is run like in your demo. If I messed to much - tell me, I'll send you a demo :]