the loadProgram API itself will simply load the program. It does not run it. The auto-run can be triggered by a debugger setting or a GEL callback. In your case, it was a debugger setting.
As for why one program auto-ran and the other didn't, If both have a 'main', then I suspect that the issue is that for the one where it just kept running, that executable had an issue where the target was unable to reach 'main'. Both programs auto-ran but only one was able to reach 'main' and get halted. The other (I suspect) just continued to run and was unable to reach 'main' (and hence just kept running).
Thanks
ki