Se usi
window.openDialog("chrome://myapp/content/progress.xul", "myProgress", "chrome,centerscreen", {status: "Reading remote data", maxProgress: 50, progress: 10});
viene passato un solo parametro che è un oggetto (infatti ci sono le parantesi graffe) con le proprietà "status", "maxProgress", "progress".
Coerentemente viene poi letto come window.arguments[0].maxProgress ecc.
Volendo usare questa tecnica con il tuo esempio, dovresti usare questo:
window.openDialog( chrome://myapp/content/ciao.xul, "myApp", "chrome,centerscreen", {param:"ciao"} );
e leggere poi il parametro con
window.arguments[0].param