Der Unterschied ist, dass der Aufruf von /install dein Programm startet, das dann selbst CreateService benutzt und auch die Events ausführt.
Wenn du nur CreateService benutzt, wird dein Dienst gar nicht erst dabei gestartet und daher kann dort auch kein Event ausgeführt werden.
Sprich:
Aufruf mit /install und /uninstall ist (allgemein) schon die beste Variante, da nur der Dienst selbst weiß was bei der Installation alles passieren muss. Das Starten und Stoppen hingegen kann man gut per
API erledigen.