Unless the products are wildly different from one another, I think the best approach is that you used 1 table for products. Even if you have some 500 fields, they can be organized with a naming scheme and would be displayed on forms conditionally not all 500 at once.
But if you couldn't do that for some reason, then another option (if you have separate tables for each product) is to use the API to run reports for each product. Then using Javascript, you can output what would visually look like 1 single report. The customer wouldn't be able to tell the products are from multiple tables. This solution would be in a code page which you can embed on the EOTI form.