FranticFish - 2:41 pm on Aug 17, 2010 (gmt 0)
I personally would redirect pages that
(a) no longer exist and have an equivalent (best example would be where two pages have merged) - to the equivalent
(b) no longer exist and have no equivalent (best example here would be an ecommerce site with a discontinued product ) - to their parent
If a page has never existed or does not yet exist (unused prod ids or article ids or invalid character strings) then serve a 404.
If you 301 everything and Googlebot decides to go ape on your site and start requesting possible urls then you're telling it that you have/had potentially thousands of pages you don't. As it's been confirmed that 301s do drain at least some PageRank you are potentially weakening your site in at least one way.
You also leave your site open to attack. If someone were to maliciously link to loads of non-existent (but valid) urls and get Google to crawl those links, this would create the same issue.