I'm not 100% but it seems that getPackageGhcVersion is actually parsing out the GHC version that cabal-install/Cabal was built with, not the GHC version for the package.
Here's a snippet of the setup-config I have:
Saved package config for shake-0.17.8 written by Cabal-2.4.1.0 using ghc-8.4
<BLAH> exe:shake
<BLAH BLAH> /Users/adam/.stack/programs/x86_64-osx/ghc-8.6.4/bin/ghc