Ciao, da uno sguardo veloce al tuo progetto noto una possibile causa del problema.

Per la seconda tabella la funzione onRowClick non riesce a recuperare i dati della riga cliccata. Credo che non funzioni in quanto il codice della seconda tabella non è presente realmente nel primo file ma viene caricato dinamicamente dal secondo file nel primo.
Sì, in linea di massima questo è un primo punto da sistemare.

Devi tener presente che JavaScript può manipolare gli elementi della tua pagina solo quando questi sono caricati e disponibili realmente nella pagina stessa (a prescindere da dove provengono). Dal momento che stai creando del contenuto html in modo dinamico, dovrai fare attenzione a richiamare le tue funzioni (che manipolano tale contenuto) solo quando sei sicuro che il contenuto stesso sia stato "aggiunto" sulla pagina.

Ora, stai usando AJAX per caricare il contenuto dinamicamente, per cui questo sarà presente sulla pagina, e manipolabile da script, solo dopo l'avvenimento dell'evento onreadystatechange e dopo averlo aggiunto alla pagina:
codice:
document.getElementById("TabellaSottocategorie").innerHTML = xmlhttp.responseText;
Potrai quindi fare la chiamata della funzione onRowClick (relativa a "tabella_sottocategorie") solo dopo che sarà eseguita quella riga (l'innerHTML che appiccica sulla pagina il tuo html da manipolare).

Per meglio specificare, prova a spostare (e quindi metterla dopo quella riga) questa parte di script:
codice:
   onRowClick("tabella_sottocategorie", function (row){
        var id_sottocategoria = row.getElementsByTagName("td")[0].innerHTML;
        var nome_sottocategoria = row.getElementsByTagName("td")[1].innerHTML;
        document.getElementById('delete_nome_sottocategoria_titolo').innerHTML = nome_sottocategoria;
        document.getElementById('delete_nome_sottocategoria').value= nome_sottocategoria;
        document.getElementById('delete_id_sottocategoria').value= id_sottocategoria;
        console.log("value>>", nome_sottocategoria);
    });