Run Script Atomically
So my question is this; is there some way that I can force launchd (or bash) to execute the script only as it was when the task began?


No.  It’s not a quirk of bash or launchd.  launchd loads the job (plist) into memory, not the script.  The script gets called per it’s “start” definition like RunAtLoad or CalendarInterval.

Also, the nuance here is when the task began.  Well, that depends on when the task was configured to be started.  Just because the job definition is loaded doesn’t mean the task has started.

If you define the job within the job definition using Program and ProgramArguments it can theoretically, do what you want. However, there’s no script logic; it’s just a command and it’s arguments. 

Now if your script takes time or to put it another way, it is still running, modifying it will of course cause errors.  This would be like you executing your script, then simultaneously in another bash session modifying it.  It’s going to have issues. 

launchd just executes the script like you would if you typed the command manually.