A "horizontal datum" references the 2D horizontal portion of a set of coordinates. Take these coordinates:
Latitude: 29.27452 North
Longitude: 102.32512 West
Elevation: 110 meters
If I said "The horizontal datum is WGS84" and that's all, then I've introduced ambiguity in my coordinates. And if there's one thing GIS professionals hate, it's ambiguity. Horizontal datums by definition give no reference to height, so is my elevation from the ellipsoid? Above the Earth's surface? Mean sea level?
Now, I could have said that these coordinates are in EPSG:4979 - WGS84 / Geographic 3D CRS, and that explicitly states that height is relative to the ellipsoid, kind of like the coordinates you would see on your GPS display. But here's the catch: the height on your GPS receiver is probably wrong.
The raw coordinates you get from satellite GPS calculation is actually WGS84 geocentric 3D Cartesian XYZ coordinates (EPSG:4978) that your receiver turns into latitude, longitude, and ellipsoidal height (via conversion EPSG:15592) if you're lucky. Too bad nobody cares about ellipsoidal height, because what people think of when they hear the word "elevation" is distance above sea level, or orthometric height. If you're really lucky, the GPS receiver will have some sort of geoidal matrix built in, and will try to guess your orthometric height based on your ellipsoid height and the geoid tables. But there's no guarantee it got your ellipsoidal height correct to begin with, as height is the weakest component of GPS. The standard deviation of height is worse than the standard deviation of the horizontal by a factor of 10!
Long story short, (too late!) GPS sucks at figuring out elevation, and nobody wants ellipsoidal height. If you really care about the precision of your elevations, you will give a horizontal datum for the latitude and longitude, and a vertical datum for the height.