Как правильно верстать такой блок?
По-хорошему, в 2021 году такие вещи надо верстать через column-count. Поддержка по Caniuse прекрасная.

В реальной жизни, конечно, всё не идеально, особенно в Сафари, но это точно лучше костылей с гридами, флексами и, прости господи, флоатами.
Можешь родителю дать:
display: flex;
flex-direction: column;
flex-wrap: wrap;
И потом задать определенную высоту, при достижении этой высоты контент, который не влазит уедет на вторую колонку и так далее