I have noticed the same whatsapp issue.
I have two android phones (HTC Desire HD and Vodafone 858 smart) sitting side by side at the moment, HTC on Cell C and Vodafone on Vodacom.
Using Android OS Monitor 1.1.8 to watch the connections to the net, one can clearly see that the connection to the whatsapp server terminates after a while, from both phones.
Logic would therefore dictate, no server connection = no push messages, until said connection is re-established by say trying to send a new whatsapp message, or when the whatsapp application, itself decides to check for messages.
Not sure if there is a setting in whatsapp to define the interval between checking in with its servers? Anyone know what the default interval is? (30min?)
Perhaps, the mobile operators do not actually have enough IP addresses for each an every connected client phone (probably the case).
So after a period of inactivity, they may terminate the connection and return the address to the "pool" for other users?
Then, as soon as your phone requires another connection, allocate you a new address for short time again? (speculating here)
This would make "push" type operations difficult as the "push" server on the internet would not know how to find you. It may try the IP address which it used last time to communicate with you, but if that had changed in the interim the operation is bound to fail.
So, looking at both phones at the moment, with neither connected to a whatsapp server, I doubt I will receive any whatspp messages until the next server "check in" time.
Just to add:
If for example I sent you a whatsapp message now and your phone happened to have an active connection to a whatsapp server, it would appear as an instant push. If you then answered me within a minute or so I would also get an "instant" reply and we would be happy.
But, if you only replied after my whatsapp server connection had timed out or been terminated, I would not see your reply until the next time my whatsapp checked in again and the server saw my active connection. (Anything up to 30mins as some people have mentioned?)
The operation would probably still be considered a "push", but just not an "instant" one.
Maybe the answer is to get whatsapp to make more frequent connections to its servers at shorter intervals?
Hope this all makes sense!