Ich habe jetzt das Beispiel angesehen, sehr interessant.

Grundsätzlich: wann immer ein unerwünschter Staff entsteht, dann stimmt irgendwas nicht, meist lohnt es sich, nach dem Fehler zu suchen anstatt dies mit einem Workaround zu korrigieren. Z.B. \context Staff mit einem neuen Staff innerhalb geht nicht, ein Context kann keinen Untercontext des gleichen Typs enthalten(soweit ich weiß, korrigiert mich bitte, wenn ich falsch liege).
Wenn du schreibst
\context StaffGroup << \new Staff... >> dann sind die unerwünschten Staffs weg.
Update: und das ist auch der Grund, warum man keinen Thread schließen sollte

Und noch ein Update: mit StaffGroup muss man die Spacing-Anweisung etwas anders schreiben, entweder als Context-Anweisung im Layout-Block
\context {
\StaffGroup
\override StaffGrouper.staff-staff-spacing =
#'((basic-distance . 0.5)
(minimum-distance . 0.5)
(padding . 0.5)
(stretchability . 0.5))
}oder mit \with. Ich bevorzuge inzwischen die Änderung im Context, weil man hier zentral die Werte für alle Contexte eines Typs setzen kann.