Very simple reason: have a separate email for each website that requires a signup. That way, you'll know directly which website leaked your email address to some spammers.
Although, separate email adresses in conjunction with a catch-all are better. After all, with an alias, you can just cut the recipient's address off just before the + which isn't that big a hurdle to spammers...
Gmail style + aliases (which don't require explicit adding) are almost as good, but can be easily and silently stripped and generally notify the receiver that a filtering situation is happening on the other end.