Alla fine ho risolto il problema semplicemente con la window.close() su ciascuna finestra modale messa subito dopo la chiamata all'apertura della stessa, di modo che chiudendo l'ultima si chiudano anche le precedenti in sequenza; per evitare che si chiuda anche la principale, ho gestito il parametro opzionale di window.showModalDialog() controllando che sia valorizzato prima di fare la close(). Allego l'esempio in caso possa servire a qualcuno. Ciao!

<html>
<body>
<table align=center valign=center border=1>
<tr>
<td>
<input type="button" value="Apri" onClick="openModal()">
<input type="button" value="Chiudi" onClick="closeModal()">
</td>
</tr>
</table>
</body>
</html>

<SCRIPT language="JavaScript">
function openModal()
{
var xurl = "C:/temp/test.html";
var constModOpen = "dialogWidth: 430px; dialogHeight: 280px; center: 1; scroll: 0; help: 1; status: 0; test: 1;";
var chiudimi = "true";
window.showModalDialog(xurl, chiudimi, constModOpen);

if(window.dialogArguments=="true")
window.close();
}

function closeModal()
{
window.close();
}

</SCRIPT>