Accuracy of IP based GeoLocation varies depending on the database used to identify the user location. Seldom is the Geolocation an accurate representation because the information is based on the IP Address owners address in their registration. In some cases the ISP will lease a range of IPs, typically 5 or more, to a business and register the business’s address for those IPs.
Through GeoLocation, we can map IP addresses to the country, region, city, latitude/longitude, ISP, etc. All of this information is collected and stored in different database from different registrars. Some registrars may be very accurate in providing information about their IP, though some may enter not be updated or have incorrect data.
The rule of thumb is the more aggregated and generic data you ask for the more precise will be the geo-localization. Country location is much more precise (normally 90 to 95%) compared to the exact location of the user such as zip code/street address/building number etc. This higher precision is because of the IP address allocation and registration for each particular country (It varies from country to country) and because it’s based in most of the cases on provider position rather than user or company position.
So in short:
The main reasons for this variation in result is because:
Here you can find an interesting university paper: Internet Geolocation and Evasion