Role of UB / uninitialized memory

That's safety vs. definedness again. The language should not "guess" your types' semantics - if you don't use any "magic" attributes, the language should only care about whether your types are "syntactically" valid - e.g. you should be able to use an RcBox to store 2 random words (as long as you don't call any Rc functions in a way that would crash).