I guess I have to answer my own question
Time-of-air is calculated from the duration of the preamble and the transmitted packet
Both of these durations are based on the symbol period, which is derived from the following equations:
First, the preamble duration is calculated from
where n is the programmed preamble length (8 for EU868)
Next, the payload duration is calculated:
The equation for number of payload symbols creates the staircase increase in total payload/on airtime.
For those who were wondering, these equations are drawn from the SX1276 datasheet (not the lorawan specification document)