Product Attribute System While Avoiding EAV
Your question looks like an instance of a very widespread pattern.  This pattern goes by the name "generalization and specialization" in Extended ER modeling.  It also goes by the name "classes and subclasses" (or "types and subtypes") in object modeling. 

When designing an object oriented data structure, the concept of inheritance plays a key role in the design.  When designing a relational data model, the designer is faced with the reality that the relational data model does not include the concept of inheritance.

So the designer is forced to implement inheritance through a workaraound, by designing tables that work more or less the way inheritance works.  This situation has been studied before, and some fairly good designs have been used with fairly good results.

Two of these designs go by the names "Single Table Inheritance" and "Class Table Inheritance".  These two designs are well presented by Martin Fowler in one of his books.  You can see a summary at these two web pages:

http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html
http://martinfowler.com/eaaCatalog/classTableInheritance.html

You can choose which one depending on the specifics of your case.

In conjunction with class table inheritance, there is a technique known as Shared primary key. Shared primary key involves defining a key to the subclass tables that is both a primary key and also a foreign key that references a row in the class table.  This does two things:  it enforces the one-to-one nature of these relationships and it makes the relevant joins simple, easy, and fast.

You can see this technique illustrated over in the StackOverflow area:

https://stackoverflow.com/questions/tagged/shared-primary-key

These three designs or techniques are not perfect, and they require a little work on the part of the application programmer.  But they go a long way to meeting a very commonplace need.