In general, panic on OOM would be an improvement over the current mostly-aborting behavior.
But in the case of write!, it still wouldn't make any sense. write! already returns a Result, so having it panic in some situations doesn't make the interface any simpler nor more convenient. It adds more work if you want to handle both error reporting methods in a generic context, and even in the Vec-only case it still requires handling/discarding the useless Result. It's just a misleading and inconsistent behavior that fell out of a neglected/nihilistic OOM handling. If write! to Vec had been returning ErrorKind::OutOfMemory since Rust 1.0, nobody would later approve an RFC to make it abort or panic in just that one case instead. It's just a legacy wart.
OOM OT
Would it be so bad? Rust programs already try to avoid (re)allocations as much as possible.
The most string-realloc-intensive fmt machinery already has fmt::Result on everything, specifically for stopping on I/O errors (which should have included the string OOM case), so it wouldn't get any worse. Various serializers, codecs, compressors, template engines want to work with any destination, which pushes them towards using io::Write and propagate io::Error anyway. That is a bit annoying and inefficient (try_reserve() with zero-sized error is more efficient), but it wouldn't get any worse either.
In programs where I want to handle as many OOMs as I can, it mainly boils down to adding Error::OOM to a few enums, and sprinkling of try_ + ? here and there. It would be easier if std had try_ methods for everything, and more bounded capacity functions.
Result exists to make error handling more flexible and locally explicit than try/catch, and that's a feature. When I want to handle all possible errors, not having this explicitness is a problem.
I don't believe that handling of OOM is pointless, so I don't see any argument in favor of unwinding/against Result more convincing for OOM than for example I/O errors. You could also say that real recoverable I/O errors are rare: when SSDs fail they fail catastrophically, and other I/O errors during data writes are mainly due to lack of disk space, but modern systems happen to die almost as badly without any disk space left as they die without RAM (on macOS it is basically the same thing). So io::Write::write() could panic too, and try { serialize(fd); } catch() { close(fd); unlink(path); } avoids the burden of propagating the io::Errors everywhere.
Which will still exist if oom=panic is removed, because that problem isn't caused by the convenience setting, but the hooks it uses.
The global linker hacks for panic=abort/panic=unwind can be annoying, and allocator APIs and their error handling is severely limited by linker hacks and LLVM magic powering #[global_allocator]. oom=panic adds to this pile, but I presume that whatever solves the other two, will make oom=panic more elegant too.