My guess is that there's a bug in your software that's timing dependent, or dependent on memory layout.
Are you running the same installed code when switching to RUN mode, or are you compiling to .BIN and installing that? Switching to a "release" .BIN file can result in memory layout changes in addition to timing changes.
One difference of PROG mode is that code runs under the debugger, and is slightly slower. I think there's more of a slowdown if you compare running in Dynamic C versus compiling your code to a .BIN file and installing it with RFU. Compiling to the board from Dynamic C and then running without the debugger attached will still incur some overhead (the compiler inserts RST28 instructions that aren't present in the .BIN file), but without the debugger attached that RST28 overhead is minimal.
What does the bug look like? Is your program just crashing? Is it possible to instrument the program in some way to identify where the crash happens?