Sembrerebbe essere legato alla "confirm". Il codice funziona bene sotto Chrome, quindi immagino che sia Greasemonkey.
Su google ho provato a cercare "confirm issue", è uscito qualcosina ma non ho trovato nulla di preciso.
In definitiva, credo che quello che hai visto tu (riguardo all'if) non c'entri in realtà, infatti questo funziona:

codice:
   if (true) {
            GM_log("Sono dentro all'IF");          
            GM_xmlhttpRequest({
                    method: "GET",
                    url: "http://www.google.it/",
                    onreadystatechange: function(response){
                    GM_log(response.readyState);},
                    onload: function(response) {
                    GM_log("Ho scaricato la pagina");
            alert(response.responseText);}
            });
    }