When an implementation of NodeProperty or QueueTaskDispatcher throws an exception and Jenkins is using two or more agents, the queue stops moving the tasks because the maintain method ends unexpectedly.
I link to JENKINS-59844 because it is the issue that discovers this one. A NodeProperty implementer was calling the ProcessBuilder#_start method (JDK) with an empty command, therefore throwing an _IndexOutOfBoundExceptions and hanging the queue. Every job reviewed in the Queue#maintain method after this event is not managed because the method ends abruptly.