Dan, welcome to the JBoss forums!
The only thing I can think of is that the run.conf.bat used by the service is not the one you edited. The service should be running "service start" when it starts, so the results should be the same.
I recommend that you run Process Manager from sysinternals and look at the full command line used to run JBoss AS in each case. You could also comment out the "@echo off" statement in run.bat, then look at the run.log file to see what is going on.
Also, I assume that you already fixed the issue where service.bat overrides JAVA_OPTS.