Primero:
al aplicar .tag:hover puede cambiar cualquier propiedad:valor al elemento sobre el que lo declara, así como los tamaños y demás propiedades que haya declarado para .tag
Si son propiedades que afectan al flujo del elemento, la modificación afectará al resto de los que le siguen.
Así que lo que busca hacer con css no pasa por cambiar de el valor de position de relative a absolute. Los elementos siguiente se reajustarán hacia arriba porque el que recibe el :hover ha salido del flujo y su lugar será ocupado por los siguientes.
Aunque quizás sí. Pero debería controlar muy bien todas las variables, y asignar al elemento consecutivo un margin/border superior de igual tamaño a la altura (height) del que recibe el :hover y sale del flujo.
O sin cambiar el valor de position compensar el aumento del tamaño con márgenes negativos (que le recuerdo que son valore permitidos)
Con ello compensaría lo que entra con lo que sale:
Todo lo anterior está escrito (y corregido) a vuela pluma, sin pensar haberlo analizado a fondo y mucho menos trasladado a código.
Pero al ser algo puramente visual o estético, yo me inclinaría por hacerlo con otra propiedad:
transform y sus opciones: scale() y quizás complementado con traslate()/origin()... etc.