This wasn't done for local jobs before, and to be honest, I'm doing it now mostly because it is a useful way to signal to the DAGSchedulerSuite that data structure clean up has been done.  Since SparkListenerJobStart is not sent for local jobs (should it be?), receiving a JobEnd without a corresponding JobStart may be confusing to SparkListeners.  On the other hand, it could serve as an indicator that a locally run job has completed -- which may be useful information even in the absence of the other typical SparkListenerEvents that local jobs do not and cannot send.  Local jobs are more than a bit odd and tricky.