не могу понять почему так, или это принимать как исключение и мириться с этим, что по вертикали не центрируется ?
по вертикали центрируеться через flex
Суть не в margin, а в самом том что высота и ширина на сайте ведут себя по разному.
Ширина, если не менять вручную, ограничена шириной экрана.
Высота не ограничена ничем.
margin: auto создает одинаковые отступы на противоположных концах. Так как мы всегда знаем ширину контеннера-обертки и ширину контейнера-контента, то известны и сумарные размеры отступов, между ними.
Для высоты мы не знаем размеров контейнера-обертки, если он преднамеренно не задан, следовательно и не знаем размеров отступов. Потому большинство способов центрирования по вертикали требуют явно задать высоту.
Но если хорошо подумать то вобщето высоту контейнера-обертки мы знаем, но для этого мы должны смотреть на происходящее с позиции самого контейнера-обертки, напомню что margin: auto вы задаете контейнеру-контента. А смотря со стороны контейнера-обертки у нас работает flex, который может задать "центрируй внутренний контент", вместо "центрируй меня внутри контейнера обертки" как это делает margin: auto.
Если хотите узнать больше о margin, рекомендую также почитать про эффект схлопывания марджинов.