allora se ti fa così è perchè evidentemente entra sempre nell'if, e quindi chiude e riapre l'optgroup. Al 99% sarà un banalissimo errore, tipo una variabile che non ti salvi/inizializzi correttamente (ad esempio all'inizio tu hai Abruzzo ma la prima regione si chiama ABRUZZO, quindi lui trova la differenza). La mia tabella era simile alla tua.

Se posti il codice che ti dava quell'output, probabilmente troviamo la magagna