You never quite know who you can trust giving your e-mail out to; if the e-mail address isn't intentionally leaked (i.e. by spam harvesters looking for addresses in web pages) then there's also the chance it can be unintentionally leaked (i.e. by the company you've given it to selling it on). If you give everyone the same e-mail address, and one gets out in the open, you don't know where it has come from; and more importantly, you can't stop it without blocking other mail too.
Fortunately, GMail provides a way around this. If you append a plus to the end of your mail address, you can add any characters that you want. So, if your e-mail address is
email@example.com then you can give
firstname.lastname@example.org to Amazon, and
email@example.com to EBay. Both are routed as if they'd been sent to
firstname.lastname@example.org. That way, if one of those e-mail addresses gets let loose, you can add a junk mail filter for mail going to that address and still rely on the other one to keep coming through.
Of course, you still have to go and change your EBay address when that's been done. You might like to introduce a sequence number (e.g.
EBay2) or a year (e.g.
2007.EBay) depending on your personal preferences.
If you've got a non-GMail account, you can still achieve the same with judicious use of the
/etc/aliases file. You can add rewrite rules that look like
example+amazon: example which will allow you to do the same thing.
As with any block-known-bad policy, it doesn't remove the potential for anyone to send you junk to
email@example.com, but that kind of mail should be picked up by your spam sieve anyway. The purpose of this technique is to allow you to give your e-mail address out to many different organisations and then being able to selectively block them without inadvertently blocking others.
The only downside is that when you forget your password, you've got a more difficult job in remembering what e-mail address it was you signed up for ...