A page for each real product. Someone isn't going to be looking for a roof rack. They're going to be looking for a roof rack for their specific car. And if someone is looking for just roof racks you're probably not interested in that user anyway. You're interested in users looking for roof racks for their cars so you can sell them something. By having individual pages you give each product a chance to be found in the search engines as you can optimize each page specifically for that product (title, heading, incoming link anchor text, etc).
Having a large number of pages won't hurt your rankings as in-and-of-itself it isn't a negative ranking factor. In fact it allows you to do a lot within your own website for SEO. Do all of the following:
- Interlink your product pages by type (roof racks, manufacturer, etc)
- Have a clear hierarchy of pages (products -> category -> subcategory -> sub-subcategory -> product type)
- Use breadcrumbs
- Use canonical URLs for different colors and other variable options
- Use microfromats for your products
You could make a page for each individual make and model. Each of those pages would be a canonical URL for a master page which would be the one search engines would use as the master page to show in its search results so you would avoid duplicate content issues. That may help you get get good anchor text in your incoming links to these canonical URLs which may help your SEO efforts.
Or you could just list all of the make, models, and years each products supports on every product page and hope that helps the search engines out when ranking your pages.