The reason is, that you won't get battery savings if random app can keep your radio busy. Since mobile carriers managed to kill WAP-Push some 15+ years ago, the only way to get push notifcations is to have a long-lived TCP connection open.
However, that opens another can of worms, there are multitude of timeouts on the way between your phone (including your phone) and the push messages server. Most apps would get this wrong, and they would have to cooperate together anyway (radio is global resource on your phone, it won't switch to low power if another app is busy chatting).
So on Android phones that come with Google apps, the task of managing push notifications is handled by Google Play framework (and also whatever Amazon is using), by single long-lived connection, used for all push messages, and not by apps themselves.