DOM - pro
standard
gerarchico e potente
pulito
DOM - contro
prolisso
lento
incompleto (Xpath|xQuery ... o meglio ci sono varianti sfruttabili solo da alcuni browser)
innerHTML - pro
standard de facto (totalmente cross-browser)
velocissimo (indispensabile per risparmiare risorse/tempi di creazione/conversione e dimensione file client)
innerHTML - contro
sporco
meno potente (meno controllo)
non standard
Non esistono ragioni assolute per usare l'uno o l'altro, solo "il contesto" e l'obbiettivo da raggiungere possono giustificare una scelta rispetto l'altra, opinione personale.
standard non significa per forza di cose migliore, ma soprattutto non deve significare la mancata capacità di valutazione (in questo caso devo poter usare la versione migliore per quel tipo di problema, che sia l'una o l'altra)