I think part of the problem is that Google has conflated the "mark as spam" button with "unsubscribe" and people just mash it as a shortcut to "make this email go away".
Unsubscribe is a trap, setting up a rule to mark every incoming email from a spamming company's domain as spam automatically is the only thing that works. Or tediously hitting the button manually, for nontechnical users.