Ich glaube, ich habe die Antwort/Lösung gefunden. Wenn ich den jeweiligen SubWorker an eine globale Variable hänge, dann arbeitet Firefox scheinbar auch vollständige die Task-Liste ab.
Kann es sein, dass bei Firefox der Garbage Collector zuschlägt? Das würde auch erklären, warum es an "zufälliger" Stelle aufhört. Sollte man das Mozilla melden. Ich konnte nichts finden, wie die Firefox JS Engine mit Workern umgeht, die in einer Funktion hängen und nur einen Listener besitzen, aber ansonsten keine weiteren Datenverknüpfungen.
PS: Ich habe auch die eigentliche JS-Biblithek angepasst, d.h. den SubWorker jeweils an ein globales Object im MainWorker angehangen. Funktioniert nun auch einwandfrei in Firefox. Scheint wirklich so, dass der Garbage Collector unterschiedlich bei Firefox und Chrome implementiert ist. Ich war davon ausgegangen, dass ein Worker innerhalb einer Funktion am Leben bleibt, wenn dieser Worker auf ein Event hört. Bin aber erleichtert, dass ich nun die Ursache gefunden habe.