... BTW, one other issue with changing this, at least if we want to precompute tupdescs for all system catalogs used in catcaches, is that that would put a very big crimp in doing runtime changes to catalogs. While we'll probably never support changes in the physical layouts of catalog rows, there is interest in being able to change some auxiliary pg_attribute fields, e.g. attstattarget [1]. So we'd need to be sure that the compiled-in tupdescs are only used to disassemble catalog tuples, and not for other purposes.
Of course this issue arises already for the bootstrap catalogs, so maybe it's been dealt with sufficiently. But it's something to keep an eye on. regards, tom lane [1] https://www.postgresql.org/message-id/flat/8b00ea5e-28a7-88ba-e848-21528b632354%402ndquadrant.com