On a GPS, the antenna can either be a little patch antenna, or if you have a more accurate dome, it's about an inch or so tall inside the dome. What's important when using a GPS is that the antenna has a clear direct view of the sky. Placing it on the roof is good, in that it is avoiding the shielding effect of being inside of a vehicle.
However, in environments with a lot of hard surfaces, GPS signals from the satellites can bounce. Remember, the way a GPS works is, it's timing how long it takes for the signal to arrive from the satellite to calculate distance. If the GPS antenna picks up these signals, that have traveled a little bit further because they're bouncing, then you're degrading the tightness of your calculated position.
This is not a transmitting antenna, like a CB. There, you have to watch your ground plane; thus, the center of a roof would be best for such; by mounting a CB antenna (or a HAM radio antenna) on one end of a vehicle roof, you're skewing the plane's presentation. By mounting a GPS antenna on the roof, you're just getting a good sky-view. It doesn't matter if it's at the front or at the back, or in the center.
This used to be a bigger problem. However, most units' programming now accounts for such. And, external antennas are usually shielded to keep low-angle signals from being read. (And, units like a Trimble unit have a horizon mask that can be applied to disregard those low-angle signals... such as, anything from lower than 15 degrees.)
It wasn't that I was saying to not mount it on the roof, I was just clarifying that a GPS is not going to use the whole roof as a satellite dish to catch more signals (at least not w/o having signal degradation).