On Windows, services use this API: https://learn.microsoft.com/en-us/windows/win32/services/ser...
Services are executables, but they have dedicated entrypoints/"signals" for interaction with the service manager. That means you can't point a service at a batch file or powershell script, because those applications don't have the symbols to respond to the signalling from Windows.
I'm sure there is some perfectly valid reason for that in Windows-land but yet I prefer the launchd/systemd approach.