It's almost doubtlessly based on (inherently flawed and sometimes easily inaccurate) geo-location of client IP addresses. I have tested this theory by connecting to VPNs:
- Access webstore - see USD
- Connect VPN to (some other country)
- Refresh webstore - see other currency
Once or twice, I've had it randomly show up in other currencies without a VPN, but that is usually while on LTE or other mobile/cellular network. In one case, on mobile, I got SKR, and connected my device to my home router's VPN, and got USD on refresh. Not everyone will have that as an option, of course, but there it is.