You don't need a parallel process for that. Just set the variables on the boulder event itself, so they're updated whenever you move it.
Get rid of all the common events. Get rid of the switches.
Create a boulder event on the first map. Set its trigger to Action Button. In the commands, do a Set Move Route to move away from the player, then two Control Variables commands to set the variables to "this event's" X and Y positions. Copy the boulder to the same position on the second map.
Now create a new event on the first map. Set its trigger to Parallel Process. In the commands, do a Set Event Location. Choose the boulder event, and set it's location to the value of the variables. Then add an Erase Event command. Copy this event to the second map - make sure you adjust the Set Event Location to ensure it points to the second map's boulder (in case it doesn't have the same event id as the boulder on the first map).
Now, at the beginning of your game, do a Control Variables to set those two variables to the current X and Y position of the two boulders. Otherwise when you first get to your map, they'll both be 0, and the boulder will move to the top left corner of the map.
Now, every time you go to one of the maps, the boulder will be moved to the correct position (and the parallel process event that moved it there will be erased). And whenever you move the boulder, your variables will be updated. When you go to the other map, its boulder will be moved to the specified X and Y positions, and when you push it, the variables will be updated.