Allora posso anche dirti che vi siete dimenticati TR nella sezione THEAD della tabella;
e che i Tags, sebbene lo facciano in pochi, andrebbero chiusi così <\/tr> col carattere di escape quando sono portati da JavaScript, come lavorando con document.write o innerHTML
Questo perché il giorno che vorresti far controllare il Documento (completato di !DOCTYPE HEAD e META Tag per il Content-Type) al W3C Validator incorreresti in errore.

Una cosa che mi piacerebbe conservare del tuo primo codice, è che si aveva la stampa ad ogni inserimento di valore dal prompt; ora invece, l' utente "perde di vista" quanto sta inserendo. Rivede tutto alla fine.
Una soluzione potrebbe essere così schematizzata:

           Container Tab
|---------------|---------------|
| |-----------| | |-----------| |
| | Unordered | | |  Ordered  | |
| |    Tab    | | |    Tab    | |
| |-----------| | |-----------| |
|---------------|---------------|


Una Tabella Contenitrice a 2 celle affiancate, che contengono altre due Tabelle:
nella prima cella, si parte già a far scrivere la Tabella coi valori inseriti, nel corso del primo for ; che può essere così arrivare ai suoi Tags di chiusura.
Quindi si fa il .sort()
si procede con la seconda cella ed infine, si chiude la Tabella dei Valori Ordinati e la Tabella Contenitrice.

L' allineamento verrebbe mantenuto dalla dimensione/altezza del font, invariato da una tabella all' altra.
Resterebbe però da fronteggiare il caso in cui l' utente invii il prompt vuoto ("OK") o scelga "Cancel".