The fact is that there is no way to 100% guarantee any notification. Several variables outside of Apples and Googles control would keep them from ever doing so. On the users device you have things like user preferences and network connectivity.
One of the largest things though that would keep them from guaranteeing the delivery is that neither have taken 100% responsibility for initiating the push itself. Im hoping that this changes as Apple and Google are both starting to explore app services hosting but they still leave all the responsibility on the developer. Which means that developers are primarily resposible for the server which initiates the push and its content. That way they can still say "if it didnt get delivered then it must be your fault". If you are familiar with iOS then you know how big of a pain in the but it is just setting up your computer/server for handleing remote push notifications.
What I have found to become increasingly helpful in near 100% delivery are letting a service like Parse.com handle all notification deliveries. They offer some neat features like keeping track of all installed devices, their operating systems, and their push notification statuses(badge numbers). They offer some pretty cool other features.