iOS (and OS X) does this: when a permission is requested, the developer can provide a usage description string to explain what that capability will be used for: https://developer.apple.com/library/ios/#documentation/Gener...
Note that on iOS permissions are requested to the user at runtime when the app tries to access a restricted capability, which helps understanding the request because it happens in the context of what the user is doing with the app.
Also, each one of them can be accepted or declined separately and turned on or off at a later time.
A typical case might be:
1. Developer releases free app
2. Users find it useful
3. Developer seeks to monetize, adds some mobile ad network libraries
4. Ad network libraries want the user's location
5. User's who liked the app now find themselves OK'ing a frivolous-seeming permission during an update, or they have to uninstall the app, potentially losing access to some of their own data.
And so we find our developer on the slippery slope. Putting the power to cause those apps to fail when they do dubious things in the user's hands means that developers would be more discriminating about their monetization partners, among other benefits.
If the app I downloaded said "Our free version requires your location due to our arrangement with our Ad providers" I would have at least known why they were wanting my location.
I know this doesn't solve the problem, people will still have the choice to either accept it (albeit grudgingly) or uninstall the app. What it does do however is acknowledge they are asking for permissions to a users data. If someone asks for my permission to use my car is it unreasonable for me to know why they want it?
In Android's case there is no way for them to know. The app either has the permission or it's not installed.
In iOS they do know. The user can give permission, not give permission, or can give it and revoke it later. Their analytics can then tell them what percentage of users are not giving them that info.
In any case, you as a developer could also choose to speak up and say to the network ad provider. "I'm choosing a provider that doesn't need more permissions".
If developers were at least given an opportunity to explain to their users why they are requiring certain information, consumers may be more willing to allow access. It seems to me many apps take a "lets grab all the info we can" approach which is extremely off putting.