The datasheet says:
External Voltage: 5VDC +/- 10%
So I take that to mean you supply 5V to it.
Later on it says:
Transmit Data. From organizer to peripheral. (Voltage Level is 3.3V ~ 5.0V)
I presume that means that it will supply (or accept) 3.3V to 5V as a high level, and less than 3.3V as a low level. This is perfectly normal for an Arduino.
Does this mean that the GPS can automatically switch between logic level 5v -3v when needed ?
No I would not read it like that. If you read the datasheet for the Arduino processor chips it states things like an output high is a range of voltages, similar to what this device is saying. A "high" is not necessarily 5V exactly, it might be 4.7V, for example. However the Arduino input pins are similarly designed to take a range of voltages.
My confusion here is that the datasheet says 3-5v but what if I connect the device to a raspberry pi which (I think) only accepts 3v, would it still work?
Well, the datasheet says 5V +/- 10% for charging the internal battery. I'm not sure what your situation is if you are trying to run it from a Pi.