In C, accessing any indeterminate/uninitialized memory is undefined behavior, period. Even in the case that the type in question is guaranteed to have no trap representations, such as unsigned char
or any of the optional fixed-width integer types.
On of the reasons I thought of as to why uninitialized memory access is undefined, is because there might be a trap representation. But if the type being used to access the memory has none, this is irrelevant.
For what purpose would a language designer declare any uninitialized memory access undefined behavior (program behavior is meaningless) as opposed to merely unspecified (the value contained could be one of any number of possible values unpredictably), especially with types that do not have trap representations?