Вот если бы у тебя были коды переменной длины, которые группировались бы в пакет, который уже и превращался бы в байты... так, чтобы два символа по 12 бит занимали бы 3 байта, а не 4 - тогда да. А так не получается.
Так. Разумно. Я бы не хотел писать формать без возможности расширения, да. Поэтому в любом случае должны быть резервные биты. Это мне кажется очевидным.
При этом потратив 5 бит на описание типов меты (включая возможность переопределения типа времени) я не ожидаю что расширение в ближайшее время сожрёт больше пары бит. А если сожрёт - выделю следующий байт.