You're probably are missing certain prerequisites for the app. Now normally if you had the app package it'd just be a case of looking at the AppManifest.xml and searching for the AppPrerequistes tag to see what services are required on SharePoint before adding the application.
When it comes to apps on the SharePoint Store I discovered that I can monitor network traffic (using Fiddler, the Net Panel in FireBug, or some other program) and catch the AppPrerequistes tag in a JSON response when you view the app details page in the store. Of course I don't think this method is exactly pretty, and have to believe there's a better solution out there, but for now it works for me.
When you watch the network traffic on the app details page you'll be looking for a request similar to /_layouts/15/storefront.aspx?task=GetAppDetails...&appid=<app id>.... Inside the JSON response for that request look for the PreRequisites value. It will list some Capabilitiy ID's which you then match with this app dependancy table to determine what service you need to add to your SharePoint server.
For example, I was running into the Sorry, this app is not supported on your server error with a greyed out app in the SharePoint Store. From monitoring the network traffic I saw this in the JSON response:
PreRequisites=
<AppPrerequisites xmlns="http://schemas.microsoft.com/sharepoint/2012/app/manifest">
<AppPrerequisite Type="AutoProvisioning" ID="Database" />
<AppPrerequisite Type="Capability" ID="{7CC11180-92E4-49F4-AF68-A55CA440E761}" />
</AppPrerequisites>
and with that Capability ID I was able to look in the app dependancy table and see in my case I was missing Access Services. So I added a new Access Services application and was then able to add the app from the store to my SharePoint site.