Quartz.NET scheduler.Interrupt(jobKey) is interrupting all active jobs

To answer such questions it's easier to just look at source code of method in question (if possible). If you look at source code for Interrupt, you will see approximately this:

public virtual bool Interrupt(JobKey jobKey)
{
  var currentlyExecutingJobs = this.CurrentlyExecutingJobs;
  bool interruptedAny = false;
  foreach (var executionContext in currentlyExecutingJobs)
  {
    var jobDetail = executionContext.JobDetail;
    if (jobKey.Equals((object) jobDetail.Key))
    {
      var interruptableJob = executionContext.JobInstance as IInterruptableJob;
        if (interruptableJob != null) {
            interruptableJob.Interrupt();
            interruptedAny = true;
        }
        else {
            // throws here
        }
    }
  }
  return interruptedAny;
}

So it enumerates all current jobs and interrupts any with the matching JobKey (which by the way makes checks in your code unnecessary - you can just do scheduler.Interrupt(jobKey)). So unless all your jobs somehow have matching key - it should not delete them all.