Repeat after me: IP addresses do not encode location.
Any tool that gives a location based on an IP address is looking it up in a directory, and since IP addresses are not physically determined, this is usually inaccurate. What's more, different GeoIP directories will give different results.
There are various strategies for a browser to work out where it's physically located. GeoIP lookup is one. Obviously Android provides Location Services (based on GPS, cellular positioning, and WiFi), but you can turn that off. I'm not sure if Chrome will get WiFi network data from the OS, bypassing location services, and look that up in some Google database, but it seems like the sort of thing they'd do (to provide location data on real computers with no GPS or cellular devices).
But I'm not sure exactly what's going on here. Maybe it's cached something that tells it where it is (eg. where it last got a GPS fix, or where it was when it last saw that WiFi network), but once you try to determine your precise location it invokes Location Services and fails (because you've turned it off)?