Can VCC and ground be swapped on a microcontroller?
Looking at the schematics here is how the Arduino gets connected:



I'm guessing what happened is that you offset the pins down by one (which I don't see how is possible but I guess it can happen), causing the +5V to get connected to GND2 and +3V to be connected to +5V on the shield.

The shield has its own power supply:



Which takes anywhere from 2.5V to 5.5V and converts it to VDD. That is why the +3V worked just fine as the power input (some Arduino's are actually 3.3V). 

It is not recommended to swap V+ and GND on any microcontroller. This can often exceed the limits of the controller (even though it won't power up) and burn out portions of the internal circuitry. 

What you ended up having though was a short between +5V and GND2, and I'm not sure why that didn't cause an issue. Perhaps the Arduino has some circuitry to withstand that, but because GND1 and GND2 are tied together, it was probably at a low enough potential to allow the shield to operate properly. 

Some USB ports are also smart enough to shut off the power if they sense a short, so if you were powering it through a hub or from a computer via USB and had an external supply on it, it may have went into some kind of fail-safe protection.