Am trying to build a dimension for Customer Preferences sourcing from Multiple tables.
Example of Source Tables are as below:

I already got Dim Customer built and now i have to design Customer Preference Dimension. The new dimension will be SCD1; always having customers latest preferences. But a given customer can have multiple combinations.
Now my question : Is it good to design dimension for each Preference table are should i get all the Preference attributes of a customer into one single Dimension Table as below:

Columns highlighted will make a unique preference of a customer. *Customer can have multiple preferences.
What if in future business introduces some more preferences and want to include in dimension. Then I have to bring those attributes in above table and also the keys which make unique.
Is it better to do individual dimensions per preference or merge all into one big dimension as above.
Suggestions please.
Edit:
Further to my reading I understand that I have to go with designing a bridge table between my Customer Dim and other Customer Preference Dimensions.
What am I planning is to create CustomerPreference Dimension for each preference type with all combinations. And map these in a bridge table where can have many-to-many customer-preference relations.
Example as below
Is this the right way to do or there any best practices.

[or] is this the right way?

Edit: 27-03-2013
As per suggestions of Pondlife am going with Snowflake approach as below:
