1) GPG is -terrible- to use as a library.
There are a lot of wrappers for various languages. Almost most all of them call the gpg executable, and scrape it's input. This is crazy-town loony-toons.
In theory, gpgme is supposed to be the solution.. But gpgme ends up calling the binary itself in many cases!
2) GPG assumes you want to use the whole ecosystem.
GPG is sort of a mega-framework. It assumes you want to do everything the GPG way - Use gpg subkeys, keyservers, WOT, Import keys to a central keychain, etc.
I've been able to go through with options flags and disable things I don't want, but it's all opt-out, not opt-in.
3) Because of 1 and 2, you can't run GPG entirely in memory. It writes a lot of files to the filesystem.. I've been bypassing this by running in ramdisks with ephemeral directories, but it's a PITA.
4) 2.1 has been in the works.. FOREVER.
The first betas of gpg 2.1 were in 2010.. I understand they want to get this right, but that's a really really really log dev-cycle. I donated to the crowdfunding, and I hope it helps get gpg out sooner.
GPG 2.1 is the first stable gpg release that includes ECC support (specifically, DJB's 25519). This is a really really big feature, that a lot of people have been waiting for.
In any event, I like GPG, and I'm using GPG because it's been hardened, and I'm not smart enough to do my own crypto.
But GPG doesn't make itself easy to integrate.