Тут 4 «дива». Если первые два находятся в обертке флекса, то высота по умолчанию зависит один от другого (свойство со stretch). Поэтому, если второй сделать тоже флексом (может быть даже ориентацией column), и его детям высоту по 50%, то получится как на пикче. Кстати, это будет работать и в обратную сторону, при переполнении второго блока, высота первого возрастет. Можно захардкодить фиксированными размерами.
Ну или по старинце нафигарить абсолютным позиционированием\таблицами, тут уж на что рука поднимется.
Минусы: осттупы. Если они тебе нужны, без некоторой боли ты их просто так не сделаешь, по умолчанию gap есть у гридов. Но его [грид] не ест осел.