In short, register all of the domains that you feel/think you need for your specific brands. If you don't it's much harder to get back the brand/domain because your competition has squatted on them. Don't register extra domains like TheBestProductEver.com because you will be penalized.
There are a few different reasons for things to keep in mind when we're doing all of this Internet planning. I'd like to make this technical, but in actuality we're talking about people, and people drive the Internet, so it is not complicated at all.
A search engine's ideal search is one where the person comes to their site, they search for a phrase, and the search engine delivers them the first result on top of the page, the person clicks, they go and stay on the site (because the site is what they were looking for) and then they go back and tell their friends "Hey use search engine X because I never waste time doing searches over there." This helps the search engines to maintain their [own] brand AND it also keeps down on overhead for them (if they're more successful, it's fewer wasted cycles for their equipment, etc, etc).
Multiple domain names for products
If we have a product, we'll call it Brand A, and a product Brand B and we're trying to tell who is interested in each product accordingly, in the marketing world, we use multiple domain names to track individual trends and product brand association. So we might have a domain for BrandA.com and a domain for BrandB.com because one of the most important things about branding is making sure everyone knows that the brand exists. If someone searches for the brand, the search engines will think that this is a good spot to send people because the investment has been made in covering the brand on this website and using a Bayesian approach most websites using a specific brand name are THE OFFICIAL SITE of the brand.
Also this keeps your competition from stealing your brand if you control the domains. So it's a no-brainer to keep those registered.
If you have a website that is all-encompassing and it covers every single brand that you have you are going to be alright if your site structure makes sense, and the pages pertaining to Brand A only focus on that brand, and likewise the pages for Brand B would focus on the specifics for its own brand.
SEO these days is much more of a social animal, so when someone visits your site, and the like Brand A and begin to follow everything about the brand, the search engines can see this and when that person searches for Brand A online, they can deliver what they think the user is looking for based on their previous search histories and their likes. This means that they can link directly to any page on your site where the users have said in mass this is THE PAGE for BRAND A.
When the social media outlets are all a flutter with talk about Brand A people will use specific keywords in context when they mention the brands. For the search engines, this makes it easy for the site to be validated for searches for those keywords, and also validated because now people are talking about the brand so it does indeed exist, and because it's multiple people sharing virally, now we know that it's something the they find interesting, and interesting things are always what people are searching for... a no-brainer for the search engine.
How do we track this stuff?
This is a two-sided coin. You can see all of the specific data per brand, but you have to split it apart for each division. If the company isn't big enough to have divisions per product line it can become overwhelming fast. When you have multiple domains and you're redirecting from one to another it becomes harder to tell where the original visitor came from unless you have access to all of the logs (or have your own custom tracking script). You can track with the same tracking code across multiple sites, but all of your analytics pile on top of each other. Everything from keywords, to country specific entry points, to languages, and browsers (especially if you're dealing with different demographics in terms of target market).
You can use something like Google Analytics and have a fulltime person who looks at all of this information, but basically they are compiling all of the info from the various inbound streams into a format that somewhat makes sense. It's sometimes difficult to tell what all of the inbound information on Google is in regard to the inbound streams because they limit things like the number of keywords, search dynamics, and phrases.
If you're hosting all of your brands on the same site, now you can't necessarily see all of the information about the individual brands because of information overload from the same domain. If you look for 100 keywords, do they keywords overlap for both main brands, do the target markets match? Is there a chance for conversion? Are the brands entirely unrelated? Are you sure you even want someone to know that the brands are related (eg. Deadly Bleach Chemicals and Baby Wash)? So there are a lot of questions from a social standpoint about how much information you want in one place as well. (And it depends on the individual markets.)
This stuff changes on a monthly and weekly basis. The powers that be control the algorithms and trying to second guess what will make your sites rocket to the top can look a lot like an attempt to trick a search engine rather than a legitimate site. If you research what things are frowned on and make sure that your sites/employees/coworkers/subcontractors are not doing them, then you'll have a much better chance of not getting penalized by a machine running a new algorithm.
My suggestion is rather than coming to a website and saying "How should we treat our brands." you should be asking yourselves, what can we be doing better in terms of branding? After all if you're spot on with your branding, the SEO is all done for you by social media and the search engines.