NETWORK_SERVICE has a lot less permissions than a regular user. Write permissions are only required for everything under "programdata" (=> "Program Data") but not for "system" (=> "Program Files").
That service would run as "LocalSystem"
The UpdateService would be running continuously and be installed by the setup to run under the LocalSystem account.
It would also handle shutdown and restarting of the Emby service. It would check for and download updates (we can't let the Emby server download the update, because then we can't be sure whether it's genuine).
If an update is available and ready for installation, the update service would notify the Emby service. The Emby service can then tell the update service to perform the update (same for restart or stop). What makes this architecture secure is the the minimal "vocabulary" of interaction between the two services. It would be flawed when the Emby service would be able to send an arbitrary command to the Update service for execution, but this way, 'update', 'restart', 'shutdown' is all it can tell the UpdateService to do.