(reverse) DNS is the weakest way of determining a location, but also the cheapest. So some websites might choose this to do geolocation. They look at the domainname that gets returned by doing a reverse DNS on the IP you are coming from and match it to a country.
The simplest way is to look at the topleveldomain, eg: .com, .be, .nl, .de, .fr, .es, .it, .af, .il, .se, .fi, ...
For .com they might also look at the domain itself to determine if it is a US ISP, eg att.com, sprint.com, etc
IP is a better way, where they look at your IP address and match it in a GeoIP database to a country.
But since IP addresses get traded between ISPs (since the ipv4 pool is depleted they sell it to eachother if they have surplus) these databases need to get updated all the time. Most of the people who build these databases ask for a montly subscription or a fee everytime you download the database, so its a bit more expensive. But it works best and fastest.
They might also do a combination of both to make sure your IP is in the US, and reverse DNS to determine you are actually a residential user and not using a proxy or VPS in a datacenter, since a residential user will have a reverse dns like: dsl-12-54.access.isp.com while your datacenter ip might be something like: hosted-by.isp.com. Further more they can do an additional check by doing a forward resolve on the dns name to see if the ip matches, to make sure you are not spoofing the reverse dns (eg if you set your datacenter reverse dns like: dsl-12-54.access.sprint.net or something, it won't forward resolve since sprint is not pointing that dns record to the ip you have in the datacenter)