I'm a hobbyist building a battery-powered activity tracker; I have no connection to u-blox. But since no one answered, I'll pick up the torch. Here are some of the differentiating features of ublox GPS modules:
* Unmatched sensitivity and accuracy
* User-configurable support for all GNSS constellations; capacity to track all visible satellites from any 3 major constellations, plus several minor augmentation networks
* Raw data (pseudorange, carrier phase, code phase) from M8T/M8F/M8P, and from undocumented commands on the v2.xx M8N
* Great documentation--search for ublox m8 receiver description
* Concurrent support for USB, 2 UARTs, I2C, SPI
* Overwhelmingly detailed configuration and diagnostic features
* In particular, a motion model configuration option to limit wild excursions and collection of bad data
* u-center GUI application for configuration, testing, prototyping, analysis, etc.
* Integrated data logging in most models, including flexible trigger and filter options
* Geofencing feature
* Optional binary data interaction protocol that's way more convenient, compact, versatile and useful than NMEA
* Frequency and timing reference features in some models (M8T/M8F)
* Untethered dead reckoning model (M8U) with integrated MEMS sensors and clever built-in fusion algorithms
* Integrated support for real-time kinematics (M8P)
* Flexible power-saving modes
* Option to preload "LiveAssist" data for quick cold starts
* Active support by senior engineers on the u-blox forums
* There's more, but I'll stop here
The GPS modules offered by SparkFun seem dated and limited in comparison.
I've purchased uBlox M8T modules from two small vendors in Europe catering to the drone enthusiast market. Unfortunately they do not expose the i2c or SPI buses, which I would prefer for interrupt-driven, low power operation.