All satelites drift - in the case of GPS satellites keeping them in on the correct orbit is a complex and costly exercise. They are allowed to drift a little, as moving them back onto the correct track constantly will use their fuel up too quickly. They can't be refuelled one launched. If it runs out, bye bye satellite. Their signals are adjusted to compensate for the drift, but is not always accurate, hence ephemeris.
As for the accuracy of the signals, people who used GPS a few years ago will remember that they weren't so accurate. This is because the signal on the X frequencies (the signals civilian receivers are able to receive) was deliberately downgraded - known as selective availablity. SA can be switched on again at the DoD's will, but they have agreed to guarentee the valdity of the signals. However, as the transmissions are very low power and it takes up to 25 seconds to transmit a complete signal sequence - they are very easily jammed. Jammers are commercially available. Also, power lines and other large metal structures can distort the signal.
And I'm convinced that the DoD does it's own jamming. Where I live, we get US carriers visiting the port regularly. When I sail within a mile of the carriers, my boat's GPS loses accuracy significantly.