В итоге я реализовал второй вариант.
Товар (страница) имеет дополнительные поля для уникальных атрибутов. Основные свойства наследуются. Одна из страниц определяется, как представляющая товарную группу. В форме покупки при выборе сочетания атрибутов с помощью JS меняется значение ID страницы, которая пойдет в корзину.