How are IP addresses assigned to end users?

Your ISP can be a big company or a local company.

Big companies as Comcast or AT&T in USA have a lot of addresses that they have requested to its Regional Internet Registry.( ARIN in the United States, RIPE in Europe).

As the IPv4 scope is depleted it's very difficult to have a huge chunk of consecutive addresses.

The ISP range could be made of a chunk of 1024 addresses from one range, 4096 from other, etc.

ARIN, RIPE and the other registries assign whatever they find free to the requester.

Small ISPs most of the time depend on bigger ISPs, then, they don't request addresses to ARIN or RIPE. Instead of that they lease addresses from a bigger ISP, resulting on even more partitioned chunks.

Sites that geo-locate using the IP address use databases extracted from the information provided by the registries (ARIN, RIPE, etc.) so they are far from accurate and usually show the physical address of the ISP that requested the range from the registry, not knowing if that range is used by the ISP or leased to another.