Tables for Product Components AND Component Combinations
My personal recommendation would be to have a separate table four each of the for attributes listing the different options. This is purely to make it easy to validate data entry. 

Then a product for each combination that is required - store transactions against this.

Then a product line table that has several products of different sizes/colors whatever.

Reason for this approach is that a colour/size combination represents a product that should be tracked distinctly from any other size/color of the same thing. A product line might be 'army cargo trousers', and could come in lots of sizes and colours.