In section 6.4.1 on the general semantics of the sequence header OBU, the specification says:
"If operating_point_idc[ op ] is not equal to 0 for any value of op from 0 to operating_points_cnt_minus_1, it is a requirement of bitstream conformance that obu_extension_flag is equal to 1."
This may be taken to mean that the SH itself has the extension flag set and therefore has an extension header. But the SH is shared between all layers and so does not need an extension header.
Note that the Vega Analyzer makes this interpretation, and will flag an error. libaom does not produce an extension header for the SH obu[Edit: and neither aomdec or dav1d will decode if one is added].