IIRC since at least 2.0 the USB spec is very liberal in what current can A port source and the 500mA is relevant only as maximum that can device with B port negotiate as it's sink current.
The spec is not liberal. See Section 7.2.1 for power delivery information. "A unit load is defined to be 100 mA. The number of unit loads a device can draw is an
absolute maximum, not an average over time. A device may be either low-power at one unit load or high-
power, consuming up to five unit loads."
Liberal in exactly the sense that you describe, that is it describes and limits behavior of the current sink (ie. USB function) and does not constrain the current that downstream port (in traditional USB topolgy an A port, ie. host or hub's downstream port) can source apart from specifing minimum of one load unit and maximum as something IIRC safety related (and not exactly defined).
Originally (1.0, 1.1...) downstream USB ports were supposed to measure and limit downstream VBUS with the unit load precission, but this idea was shelved very early on and replaced with recommendation of placing fuses or polyswitches and sensing their state.