The likely cause is that agetty itself does not exit when the shell exits, it simply respawns the login command. You can confirm this if the PID of the agetty doesn't change.
If it does change (and systemd restarts the agetty process) then you might want to stop the service as one of the Exec statements of the service to prevent it from respawning.