MKR GPS Shield library only works if you call GPS.Available() non-stop

Thats the way most GPS libraries work, you need to feed the libraries with a constant stream of characters from the GPS so that the library is kept up to date with location etc.

The GPS is just a standard Ublox SAM M8Q, if you want to not use it in the standard way, i.e. constanly feeding the library with characters, then you can turn off all the NMEA stuff and poll it dirctly for location information etc.

You might want to try this library;

Its interrupt driven so the library is automagically kept up to date with stuff.