Hola. Si no me equivoco con el createTextNode primero creas el elemento que deseas y luego tienes que introducirlo en el propio DOM, mientras que con innerHTML lo que haces es incluirlo directamente. Ej.:
createTextNode:
Código Javascript
:
Ver originalvar texto = document.createTextNode("elemento");
document.body.appendChild(texto);
innerHtml:
Código Javascript
:
Ver originaldocument.body.innerHTML = "<h1>Ejemplo innerHTML</h1>";
Seguramente no sea la única diferencia que exista, pero esta es una de ellas. Un saludo