In realtà, la risposta (almeno per Drupal) non ha nulla a che fare con la retrocompatibilità. Drupal ha una politica di non mantenendo la retrocompatibilità tra le versioni principali. Piuttosto, andiamo avanti e rendiamo Drupal il meglio possibile con ogni versione della versione principale, e forniamo un percorso di migrazione in modo che il database possa essere convertito per la prossima versione durante il processo di aggiornamento.
Quello che descrivi è semplicemente ciò che accade quando lavori in un database SQL: devi decidere tra rallentare e complicare anche le query abbastanza semplici con una serie di join, o serializzare i dati in modo che gli elementi con campi diversi possano vivere nel stesso tavolo (che rallenta e complica un sacco di altre cose).
Ricorda, stiamo lavorando con tabelle qui: ogni riga deve avere le stesse colonne, proprio lungo la linea.