Quantos tipos de produtos você espera? Cada um deles tem sua própria lógica de aplicação?
Você pode fazer um modelo generalizado chamado modelo de "valor de atributo de entidade", mas ele tem MUITAS armadilhas quando você está tentando lidar com propriedades específicas de um produto. Consultas de pesquisa simples às vezes se transformam em verdadeiros pesadelos. A ideia básica é que você tenha uma tabela que contenha o ID do produto, o nome da propriedade (ou o ID em uma tabela de propriedades) e o valor. Você também pode adicionar tabelas para armazenar modelos para cada tipo de produto. Assim, um conjunto de tabelas informaria para qualquer produto quais propriedades ele pode ter (possivelmente junto com intervalos de valores válidos) e outro conjunto de tabelas informaria para qualquer produto individual quais são os valores.
No entanto, eu advertiria fortemente contra o uso desse modelo, pois parece uma ideia muito inteligente até que você precise realmente implementá-lo.
Se o número de tipos de produtos for razoavelmente limitado, eu usaria sua segunda solução - uma tabela principal de produtos com atributos básicos e, em seguida, tabelas adicionais para cada tipo específico de produto.