The dimensions processing is actually very data efficient. It was changed from how it used to work which did impact performance.
Each time a unique combination of dimensions is seen on a transaction, a new dimension set is created. It is the dimension set code that is added to the transaction line.
Any individual transaction line only has the one dimension set id which is a just a link to another table. Whilst you have a huge theoretical potential for combinations of dimensions, these are only sitting in a table when created and pareto analysis suggests you will only ever see a small percentage of those potential combinations ever used.
Whether or not they should be dimensions is a valid question. I am always keen to see people use dimensions more than they typically do as it improves granularity of reporting. However, if those values aren't used in reporting, they possibly shouldn't be dimensions.