Windows weiß, was ein Programm/Dienst gestartet hat. zu jedem Programm wird dessen Parent gespeichert.
Also technisch wäre es schon möglich, dass Windows beim Beenden eines Diensts ALLES von ihm beendet.
Ist wie wenn ich im Taskmanager (Details) zu einem Programm sage "Prozessstruktur beenden" (diesen Prozess/Task samt seiner ChildProzesse und deren Childs usw.), gegenüber "Task beenden" (nur diesen Prozess).
Aber es kann auch einfach nur sein, dass der Dienst in einer eigenen Session läuft.
Gestartet Programme, auch die CMDs, würden dann standardmäßig in dieser Session laufen
und beendet Windows beim Ende des Dienstes auch diese Session, dann fliegt das mit weg.
Also ich fände es schon nett, wenn Windows da mal bissl aufräumt.
PS: Du kannst doch zwei EXEn machen, also noch einen "manuell" gestarteten UpdateService, welcher dann deinen Dienst beendet, aktualisiert und wieder startet. (durch deinen ersten Service gestartet)