Cuando posicionas un elemento de forma absoluta y no hay ningún
elemento de contención —léase cualquier elemento ancestral con una posición diferente a estática— ese elemento será el elemento raíz. Y aunque pueda parecer que ese elemento es html, no lo es. Es
viewport. Y el tamaño de viewport es algo así como el "espacio visible del navegador".
Entonces estás definiendo que la altura cubra el total de ese viewport, que, obviamente, termina cuando se acaba ese espacio visible.
Sólo tendrías que colocarle a html, ya que este crece según el contenido —tiene height: auto por defecto— una posición relativa y funcionará como esperas ya que entonces la posición absoluta hará referencia no al elemento raíz sino al elemento html.
También podrías ponérselo a body, pero para el caso, lo mismo da.