While each message is stored only once on the Application Sever and just linked to the recipients and to the sender, the Application Server can still store read marks for each recipient (separately).
This information is only visible to the recipient.
Its up to the Client to implement handling of read marks e.g. one client might choose to mark a message as read automatically when it is loaded, another client might force you to manually set the read mark.