This quite possibly varies by jurisdiction, but at least in the UK they
do have to take legal tender in the GP's case. In a restaurant where one pays after receiving the food and a petrol station where one pays after receiving the fuel, you have no way to give back what you've taken and leaving without paying is illegal. So while it would be foolish of the retailer to attempt to refuse payment in local currency, if you try to pay in legal tender then they are obliged to accept.
Having said all that, the largest denomination that's legal tender where I am (Scotland) is £1, filling up with fuel today cost me £100, and I'm not in the habit of carrying around that much loose change.
Also, it's absolutely the case that a store where you receive the goods after paying for them may accept (or decline) whatever they choose. Many shops on Edinburgh's High Street, for example, have signs in their windows saying they are quite happy to accept Euros or Dollars. Not that you'll get a particularly good exchange rate, mind.