It's unfortunate, we need another abstraction - not MaybeUninit - that's compatible with write-valid-only, not sure how to do that i.e a type that represents an uninitialized hole but the only valid operation is to fill the hole.
I can't speak to vec specifically, but for simple array use cases and especially when inlining is working, examining the godbolt output for this sort of pattern shows no difference between using an initialized array e.g. [0u8; 4] or unsafe { mem::zeroed() }:
If the output bytes are overwritten, LLVM appears to optimize away initially filling the buffer with zeroes.
I mention this mostly because I see people unnecessarily reach for unsafe here for assumed performance benefits when the generated code is identical to using safe code.
If you have some wacky FFI use case, obviously all bets are off.