In my experience, GPS is generally very accurate, +/- 10 feet. The caveat is that the device is receiving signals from GPS satellites, and has a lock on at least 3 satellites. However, if a signal lock is poor, or non-existent, then the accuracy can be off quite a bit. The worst case I personally dealt with on a GPS device was literally a half a world away. Several miles is not unheard of.
Also, I seen some phones triangulate their position off cellular towers when GPS signals aren’t available. In that case, the accuracy may be anywhere from several hundred feet to several miles from the actual location.
I’ve also seen a case where one figure was accurate, but the other was off. e.g. the Latitude was accurate, but the Longitude was 30 miles away. That particular issue may have been from only getting a lock on one or two satellites.
A number of factors can effect a GPS signal, including terrain and being inside steel and concrete structures. The combination of terrain and buildings making “concrete canyons” in large cities is an issue, even when outside. On a smaller scale, signal-blocking can occur from metallic containers, including Faraday bags.
If you plot out on a map the places that the GPS shows as a given location in the photos’ metadata, and then plot out the actual location where the photo was taken, you may gain some insight into what’s gone wrong.