gap (flex/grid/multi-column) задаёт промежутки между элементами, не снаружи контейнера. Не нужен «хак» с отрицательными margin и нет лишнего отступа у крайних детей.
margin — внешний отступ у конкретного бокса; схлопывается у блочных элементов по вертикали; удобен для уникальных исключений.
В дизайн-системах: базовый ритм через gap у layout-примитивов; margin — точечные отклонения. gap не заменяет margin для отступа от границ родителя — там padding контейнера.
Чем `gap` отличается от `margin` в системах отступов? · Sobeso