The way I see it, you only search for coupons once you see a product at a retailer and you want to buy it (or even once you already have a shopping cart built up, and are on the checkout form where the coupon field is). So the retailer already acquired you as a customer, and you're ready to checkout. Most likely you'll end up checking out anyway even if you don't find any valid coupons (which is what's currently happening, since most coupons don't work anyway).
So why are retailers still paying out affiliate revenue in this case? They have the customer already. This shady affiliate doesn't bring them anything they didn't already have.
They can easily fix this by only paying out affiliate revenue for actual, legitimate affiliates, those that brought you a brand new customer. If the user already spent time browsing your website and built up a shopping cart, don't pay out affiliate revenue even if they do end up clicking on an affiliate link after.