Everything in #nostr is an event including messages. That's why the message metadata is accessible but not the content. Only the receiver and sender can decrypt the message data.
Discussion
yea. I guess if a message was a private channel, ie like lightning, it would be more private. For example I can see that Jack Dorsey has a private chat with Samson Mow but not how often they talk.
With the publish-subscribe model of nostr, that could only be possible if each message is using different public keys. We can’t have a protocol that is open as well as closed at the same time.