просто как я вижу эти кейсы через флексы:
1: align-items: flex-start;
2: группировка fa,ga|f,g, для групп align-items: space-between
3: группировка fa,f|ga,g и для второй группы align-items: stretch
я бы согласовал это с тем, от кого поступило требование
и еще вопрос - при каком условии высота блоков меняется?
мне кажется странным, что это нельзя отследить
любая группировка приводит к тому, что либо появляется пространство между f и g, либо не появляется между fa/ga когда высота f больше чем высота fa
не могу отследить измнения, т.к. внутри f есть вложенный контент (вложенность может быть очень большой), и вложенный контент сам задает себе высоту и сообщать о своих изменениях довольно сложно ему