Non è un comportamento strano. E' perfettamente coerente con quanto hai scritto.
Quando l'Userform arriva all'evento Query_Close, significa che è gia in fase di scaricamento (Unload).
Se tu, in questa fase, rilanci un comando che implica che il Form sia aperto, fosse pure l'Unload, crei un'istanza implicita dello stesso Form, che pertanto, pur rimanendo invisibile rimane attiva.
Nell'evento Query_Close devi occuparti solo di lanciare la frmMain.Show. E basta così.
TheTruster