One big reason is battery life. I don't want my mobile device to have to rely on the reliability of another party to transmit. If the other party can't receive at the moment, my phone has to do a lot of work to figure that out and periodically retry sending in a graceful fashion. With a server I am guaranteed that as long as my phone has connectivity, my message will eventually be received, and it only takes as much energy as it takes for me to send it to the server.