Well, reality is many real world projects depend on it. Eg linux, disables strict aliasing. IMO the strict aliasing rule is a mistake, people know how the code should behave, so it should behave as expected.
The strict aliasing rule exists because without it a C compiler has to second guess every load and store, which would have been horribly slow in the 80s and would be even worse now. It still ends up doing that for distinct pointers with the same type, which is why you can explicitly restrict them in newer language versions so the compiler can assume that those pointers wont alias.