Firstly, in iOS you can deny access to certain resources (when they're first requested by an App you receive a popup you can either accept or reject) and therefore Apps are designed to handle the scenario of access being rejected. You can also disable Internet access on an App by App basis, although you're not explicitly asked this ahead of time. Overall there is a significantly smaller range of permissions though.
Relating to Android, I can think of a few reasons:
- A permission failure throws an exception which a developer may not necessarily catch. Most Android Apps are typically not developed with the assumption that permissions will be granted selectively.
- If a bunch of Apps frequently crash or work unreliably without notice it will reflect poorly on Android in the eyes of average users who don't understand the technical aspect.
- Blocking Internet would be an excellent ad-block function. If an ad-supported App such as a calculator doesn't require Internet to do its core function then users could easily disable Internet and block Ads. I imagine this is particularly untenable in the eyes of Google.
- It would create a significant support burden for developers to maintain a list of permissions which are "really" required for certain functions. Users could easily think an App was buggy but actually they'd just removed a required permission. For developers having to build in prompts instructing the user that additional permissions are required would create extra complexity at every point where permissions are required.
- App developers should already be applying the principle of least privilege. If an App is grasping for access to things it obviously doesn't need then it's a good sign you should be suspicious.
- 83% of Android users don't pay attention to permissions as they are
Things might be different if:
- Android developers were told from the start to assume some permissions might not be granted
- Android provided a built in prompt allowing users to enable a required permission before throwing an exception
- And there was a way to treat Ads differently from other Internet traffic
Obviously if you're a power-user then App Ops might be an option for you.