Grawity's answer is certainly helpful, but I found a fundamental difference between these commands detailed on http://cbfive.com/blog/post/Command-Line-Service-Management-%28NET-v-SC%29.aspx . In particular, this page notes that these two commands differ in their timing: "net" is synchronous and "sc" is asynchronous.
SC sends the control to the service and then returns to the command
prompt. This typically results in SC START returning the service in a
state of START_PENDING. NET START will wait for the service it is
starting to come to a fully started state before it returns control at
the command prompt.
[L]ike SC START, SC STOP does not wait for the service to come to a stop
and will there for often return STOP_PENDING for many service stop
operations. NET STOP on the other hand will wait on the service to stop
before it returns to the command prompt.
NET and SC have different ideas of what they consider to be
success conditions. The question SC asks to determine if it was
successful is, “Did I successfully send a stop control to the
service?” If it did, regardless of whether the service stopped, then
I satisfied the successful condition. NET asks the question, “Did the
service I attempted to stop, return that it stopped successfully?” If
it did, then it satisfied the condition. If it didn’t, no matter what
the reason, then NET fails the successful condition