I’ve experienced this in many countries, including Portugal, it seems the universal answers are:

  1. Taxes: Just by saying they don’t take international credit cards, they are betting on the odds that you will somehow pay in cash, and a cash based transaction is not always reported (for purposes of taxation).
  2. Settlement times: The settlement time for a payment for an international card is much higher than a domestic card. Thus many of them will avoid getting the settlement a week or 10 days later.

More often than not, it is the Taxes rule. They want to save on every penny they can, and when you opt to pay with cash, they get the best deal.