Si no lanzas un Thread aparte, tu programa principal seria el que se quedaria en un bloque infinito escuhando del puerto de la impresora, por lo que no podrias "interactuar" con el. Si eso es lo deseable, pues no hacen falta más cosas.
Pero lo normal es que el programa principal sea interactivo (poder recibir comandos como "apagate") y por eso hace falta un Thread aparte.
Y añadir solo el EventListener no basta (in meterte en un bucle infinito) ya que si no, cuando el main termina tu programa acaba y se cierra.
PD: He visto ahora tu nuevo mensaje, te respondo más tarde que ahora estoy "mucho liado"