Script to run Adobe Update Remote Manager as Launch Daemon at Boot without MDM
Since the launchd plist is in /Library/LaunchDaemons/ it's going to be run as root. Given that, you don't need to call sudo as your first program argument, nor do you need it in the shell script. Also, it's good practice to use full paths in program arguments so /bin/sh instead of sh.

That's all just housekeeping though. What I find interesting is that it works when you are logged in as a user but does not work when launchd runs it upon load during restarting. The launchd.plist man page section for RunAtLoad has this little warning:


  This key should be avoided, as speculative job launches have an adverse effect on system- boot and user-login scenarios.


For that reason I avoid using RunAtLoad true for root level launchd tasks. I suspect what you're seeing is that the system is not ready to run RemoteUpdateManager at the moment when launchd loads your plist. 

RunAtLoad is awfully handy, though, so you may have to stick with it, but I'd play around other mechanisms to tell launchd when to run your script. You could try using StartInterval 60 or something to give the system 60 seconds to fully spin up after loading the plist. That assumes your maintenance window is at least 60 seconds long plus whatever time is needed by your script. An alternative could potentially be to use StartCalendarInterval but you'd want to be very sure that the maintenance window is rigidly defined in time and not cancellable by your users.

You could also keep RunAtLoad and use KeepAlive with SuccessfulExit true to make launchd keep trying to run your script until it successfully exits. It's not an elegant solution but it may work. If you're doing this make sure to set your ThrottleInterval to something reasonable or else launchd will complain mercilessly if the task is permanently failing.

The last thing to keep in mind is that your plist is going to cause your shell script to be run at EVERY restart. You should incorporate some mechanism in your shell script to detect if you're in a maintenance period and exit 0 if not.