In the C++ object model, a type which satisfies the concept of Trivially Copyable is logically one who's data is just a block of bits. The type is just a collection of fundamental data objects with some value(s). As such, copying a block of bits to some storage is a perfectly valid operation, and that storage should (if appropriately aligned) now contain such an object. Furthermore, it's perfectly reasonable to copy a block of bits to some temporary storage (regardless of alignment) and then copy it back into an object of the appropriate type.
C++ allows all of this for Trivially Copyable types.
If a type really is just a block of bits... why should its destruction involve anything more than just memory deallocation? Or more importantly, if its destruction does need to do more than deallocate memory, is it really just a block of bits?
C++'s answer is no, it is not. Or rather, we cannot prove that it isn't just a block of bits.
That's the thing about Trivial Copyability rules: it's all about proof. Under trivial copyability rules, we can prove that such a type is just a block of bits. Other types might be blocks of bits, depending on what those functions do. But since we cannot prove whether they are or not, we therefore forbid treating them as such.