They are an optimization. T(), Tr() & friends require three bytes of PROGMEM, one for the step, two for the keycode. Tc() & co need only two, because we don’t store the key flags. When one’s low on free PROGMEM space, yet, wants to use macros, this is one way to save a few bytes. The downside is that this only works for keys where the flags are empty (so, only normal keyboard keys; no mouse keys, no consumer keys, etc).