UB is bad when it's *inconsistent*. Making it so that your
creation/allocation and destruction/deallocation have to match is
consistent. Making it so that inconsistent code sometimes works
doesn't make the language easier to learn. It just adds complexity in
the name of... what, exactly?
Not. It is still not recommended (but sometimes it is really needed), but if someone really does it, it should not be UB.
Can you give a reason why such a rule ought not be followed? Show me
actual good code that doesn't follow this rule. Not just code that
technically works because of some statement in the bowels of the
standard, but code that has some kind of advantage that is arguably
more important than having a simple rule everyone understands and can
easily follow.