There are plenty of credit cards with rewards and no fees, and some (like TD) have no fees conditionally if you meet a certain minimum balance threshold.
I've always just done cashback rewards though. I know it's theoretically "worse" than points, value-wise, but they can't change how much a dollar is worth, just the percentage (which they've never done to me yet).
I don't think there's any laws against this. What I found specifically says:
I know that historically, Visa and Mastercard have prohibited merchants from charging fees for using a credit card, but couldn't do anything about offering discounts if they didn't use a credit card. I believe they removed that from their merchant agreements a while ago, because it was mostly performative, and I don't think they enforced it very well.