Use option 2!
It saves you from having to create walls which can be made visible/invisible.
void TeleportPlayer(string& asStartPosName);
Instantly teleports the player to the target StartPos.
IIRC, if you put the PlayerStart box not necessarily
in the floor, but slightly above and within the script area, the player won't easily notice.
FlawlessHappiness did this very well in our Many Hands project. I have never done it before myself, but he should be able to provide a really good insight. While I'm certain he'll come across this thread when he is online next (should be within the next few hours), feel free to drop him a personal message. I think he would be more than happy to help!
An alternate sequence you could do is perhaps make the screen fade out for an event, then when the player comes to, they may look like they are within the same environment, but is actually in the new area