Why is my launchd job running at boot even with RunAtLoad key set to false?
You likely have an interaction between the SuccessfulExit and RunAtLoad keys. The launchd plist manual page mentions an inversion takes place if RunAtLoad is set
:


  SuccessfulExit 
  
  If true, the job will be restarted as long as the program exits and with an exit status of zero.
  
  If false, the job will be restarted in the inverse condition.  This key implies that "RunAtLoad" is set to true, since the job needs to run at least once  before we can get an exit status.


Others have struggled with this behaviour, see launchd ignores RunAtLoad=false.