You opened up a whole can of worms, it is good to really put some thought into a database structure, i think you relational database thing is neither here nor there nowadays. So just carry on using mysql the way that everyone else does but onto your table structure.
There is no right or wrong way, you really do have to make your own mind up depending on what it is you are trying to do and if you are trying to have lots of things then one setup will never be as good as another,
you say one table over several tables, how do you seperate products into different tables when one merchant sells thousands of items across 6 different product types? how can you seperate them when the merchant doesnt have a category structure to identify them.
You want one table with lots of data, how much data, we run mysql with millions of products in one table but we did a lot of custom tuning with both the server and mysql to get it to work/behave. What about indexes?
For some jobs it would be better to have each field as a seperate table but then you have more strain on your machine doing searches in one table to get id's and then going to other tables to get the information (double the queries) so you see the list is endless.
There are some clever ways that you can have one table for ALL types of data, it does not matter what product groups there are but that is probably not the kind of programming you would get a lot of support with on forums and programmers as they probably would not understand what you are doing and why.
Everything depends on everything, processor, hard drive speed, memory buffers, caches, tuning so you have to know what it is sat on and how much it will be used and if your designing a script for others to use then you need to presume that they will all be on shared hosting all with timeout limits on processes and with very little memory so it makes the job even harder, you cant have large tables because there is not enough resource and you cant have many tables because mysql will have too many tables open in memory.
I
am not going to get into database consultation as its costs us many thousands of pounds to get where we are with ours and i would say its only now we really really understand how to push mysql hard like a ***** but if you are starting off i would say just put it all in one table and make some money, accept that the fact that it only becomes a problem when you are making money and then you have enough cash to fix the problem as they come about.
Also bear in mind that generally performance problems associated with large tables, providing the code is ok can generally be solved by just getting a bigger server or faster drives most of the time.