Push isn't syncing. Push only pushes a notification to you when its relevant. Syncing means pulling data which means periodic polling. Push won't get all the tweets/wall posts since you last opened it. It will only push through something you want to be pushed through.
The iOS apps all push, and they only fully refresh when you open it. You will get the notification without the app open. Someone on this board had a discussion with me before. He likes it when Android apps have the option to also pull data because that way when you open the app, you're good to go. I can see that advantage, but on the other side of the argument you eat up more data. On either Facebook or Twitter, you can enable push but disable syncing. This is how iOS does it. I believe in choice, so it'd be nice to allow pulling and also disable syncing. Pulling will always use more data.
But like I said, because so many apps do full syncing on Android, it's easy to go haywire with data usage. iOS forbids a lot of background tasks which is why you can never use that much data unless you sit in front of Facebook and hit refresh every 3 minutes or you leave Youtube on 24/7. Because we have so many background tasks on Android, it's VERY easy to go overboard with data consumption.
Edit: I think the word I was looking for is refresh interval. Facebook has a "refresh interval" option in the app that lets you select "Never" even while receiving push notification messages/mentions, etc. Twitter has a Sync Data option that has to be checked to get push notifications of messages/tweets. However in refresh interval, you are not allowed to choose never, meaning you are forced to poll and pull new messages in.... so even if you select 4 hours, you can get real time push notifications of mentions, but your client will also poll every 4 hours to download messages. It would be nice to turn that off...
i used to be an iOS dev well for a few months. I can try to explain the difference in ios and android push.
push effectively just some socket open blocked on input. its part of the reason some android devices drain battery like crazy becuase you have say 5-6 services all awake , some in a horrible fashion (ebay app was really really bad about this when it first came out) and some will also do a poll at some interval.
anyway, when you write an android app, if you have say a polling service and a UI intent when the app is off screen the UI process is idled, but the service is still on waiting for data.
anyway, with android you can get X number of services. the nice thing is as an app developer you have a lot of control about how this gets done since you can effectively do whatever you want. android has real multitasking so all the services can run at the same time.
now iOS , apple doesnt want to give devs this kind of freedom and it really doesn't have real multitasking. the way "push" and multitasking works on iOS is there is an apple service which handles all push notifications. as a dev you have to register a special certificate, and guid and things with apple. and there is an API so your app's UI can be waked up by this apple service (i think its called the APNS , apple push notification service). the service is used both do to things like wake ups based on timers, and also external things from say the internet.
so as a developer, you'd register your special guid and certs with apple. send apple a special packet to apple's cloud. apples cloud sends a packet to the iOS device, the service gets it, wake up the app, and it looks like its "multitasking" when in fact they were sleeping. now the good parts of this are the service is tightly controlled and there is only one of them , so usually this is the reason why battery life is affected (i.e. when you have say a htc sense device with like 8 extra BS htc services , they all do use some cpu even just sitting there doing nothing). now what sucks about this is its much more annoying as a dev to setup APNS plus it is "fire and forget" apple has no acknowledgements or timeouts or anything if say your packets get lost. I have heard windows phone 7 works in this way too , but windows 7 phone is dead anyway so who cares (ok i kid i kid ahhahaha)
so now , the thing is, using APNS on apple doesn' ti dont think save data. just the amount of data used for an APNS push is probably smaller than having 8 different services using whatever data formats every app uses to get pushed data. but generally apps would so something like, get an Apple push notification packet , the APNS wakes up the app, then the app does a pull anyway. so i dont think it really uses less data because of push vs pull, just that the devs have to use less data during the push part because of the apple push service's limited data format.