¿Por qué no margin-top: auto y margin-bottom: auto work lo mismo que sus contrapartes izquierda y derecha?

Si configuro las propiedades de margen de CSS de un div como esta:

div { margin-left: auto; margin-right: auto; } 

Obtengo un div que se centra horizontalmente en la página, como tal .

Sin embargo, si cambio el CSS a esto:

 div { margin-top: auto; margin-bottom: auto; } 

mi div no está centrado verticalmente No necesito saber una solución (hay muchas soluciones disponibles ) pero me gustaría saber el motivo de este comportamiento. ¿Por qué los margin-top y margin-bottom no funcionan de la misma manera? ¿Qué me estoy perdiendo?

La respuesta corta es la especificación así lo dice.

10.6.2 Elementos reemplazados en línea, elementos reemplazados a nivel de bloque en flujo normal, elementos reemplazados en “bloque en línea” en flujo normal y elementos reemplazados flotantes

Si ‘margin-top’, o ‘margin-bottom’ son ‘auto’, su valor utilizado es 0.

http://www.w3.org/TR/CSS2/visudet.html#Computing_heights_and_margins