Even knowing we have the option to view users archived messages if we impersonate them, I feel that we lose some credibility with that feature (impersonation) if we're dealing with a cyber bullying or improper language issue because the user then has plausible deniability (How do you prove it was them and not the one impersonating who created and sent the message). We need to be able to run reports that will show who messaged whom and when - and also have the column feature to select if there was an impersonation occurring at the time. We can run analytics on who is signed in to the system, why not messaging?
A few years ago, it was made possible to view communications from the user profile in Core for this purpose. You no longer have to impersonate the user, and you can see all communication to and from a user in this new area in the profile.