Ufff... Creo que al final fue una confusión.
Lo que sucede es que la declaración de los márgenes, de los títulos p. ej. (contenidos dentro del div-celda), son ignorados una vez que se aplican los del selector universal. Éste sería un ejemplo:
Código:
<style>
.total { width:100%; height:100% }
.tab { display:table; margin:auto }
.tab > div { display:table-cell; text-align:center; vertical-align:middle }
.tab > div > * { margin:auto } /* comentando y descomentando esta línea se aprecia la diferencia */
h1 { margin:10em auto 0 }
</style>
<div class="tab total">
<div>
<h1>Título</h1>
</div>
</div>
Pero, bueno, supongo que eso ya es un comportamiento normal del motor.