I don’t have a solution, but i’m curious how it works. Does a receiver has to click some button like “Send receipt” and can he select to not to send a receipt? Or is this done automatically on the background and you only see a status of the message changing in the chat window?
What happens when you send a message to offline user, then he comes online and receives that message from an offline storage. Does it still asks for a receipt? And does a sender gets a status “message received” in this case?
I assume, that receipt packet has another id (like “ack”), so it is not stored in the offline storage like other “normal” messages and that’s why sender doesn’t get anything when he comes online. That’s probably how this XEP is designed and you can’t do anything about it with the standard extension. You will have to modify the server to store ack packets in the offline storage too, or somehow add “message” id to ack packets, so it would be stored also, but then not misinterpreted by a client as a normal message.