You forget a few things. On Android can't the app just run forever and decide on its own how often to poll the servers? This is a different thing. The OS decides when to schedule things if the app supports it.
Also battery life has improved a great deal since the first Android or iPhone device came out. What may have been true years ago isn't necessarily an issue anymore.
You mean like using Android's SyncAdapter and setting inInexactRepeating()? Android has supported this basic type of background scheduling since the start of time. The main difference is that Android you can do more - which can be abused. And their solution for abuse is a battery monitor that allows you to see which app is using the most battery. In a way you can say Android is more superior/powerful or you can say that the iOS is more limiting and thus potentially more user friendly.
Unfortunately, I think many Android app developers either don't know or care about "API abuse". When my Android phone is sitting "idle" with the display off, adb logcat still shows tons of debug logging from apps doing more work than they should. I like the freedom that Android gives developers, but, as you suggest, I think iOS provides a better user experience.
I can think of many ways Google could fix some of this bad behavior by throttling apps running in the background.
Bad developers do have that power. But best practice is to use a SyncAdapter, which works very similarly.
Actually, one of the biggest savings comes from apps all syncing at about the same time... firing up the cell modem is expensive, cheaper to do a bunch of transfers at once than spread out over time.
iOS will actually disable these features if the battery is getting low. It will also group them together so that the wireless chips are on as briefly as possible.
Great - another option. I prefer my phone deciding when to do this automatically (and maybe an option to disable it so I can run it into the ground if absolutely necessary).
I prefer magic, too, if it works. I doubt it does in this case, though, and I get the impression Apple knows it hasn't nailed it yet, either. At least, elsewhere in this thread people note Apple's stuff can be overridden on a per-app basis.
I also get the impression that Apple's idea about the perfect balance between flexibility and "it just works" neighs more towards the latter than Google's ideas about it, as witnessed by some remarks that Google's Sync adapters that app developers _can_ use are exactly the same as Apple's solution that app developers _must_ use.
While I do agree that iOS isn't nearly as flexible as Android, let's just say that 90% of the time you might want to go with a Sync adapter versus rolling your own solution. Also, I believe that Apple has the best intentions at heart when it comes to implementing Background Fetching in it's current spec. I mean, lets face it, it's way better to have a mobile-optimized OS manage resources than for you to do so, don't you agree?
Also battery life has improved a great deal since the first Android or iPhone device came out. What may have been true years ago isn't necessarily an issue anymore.