Why?
Redundant data wastes disk space and creates maintenance problems. If data that exists in more than one place must be changed, the data must be changed in exactly the same way in all locations. A customer address change is much easier to implement if that data is stored only in the Customers table and nowhere else in the database.
Although other levels of normalization are possible, third normal form is considered the highest level necessary for most applications.
Probably normally work somewhere around 3 normal form. 4th maybe for excellent OLTP system.
Fact table to dim table is 3rd normal form and if you have a snowflake schema with chained dim tables then you are still preserving 3rd normal. But if you start stuffing extra levels into a dim table you break 3rd normal and obv this is de-normalization. This becomes more attractive as you get further out from the fact table.