value
refere-se a um atributo de uma tag, enquanto innerHTML
refere-se ao conteúdo entre o início e o fim de uma tag.
div.innerHTML == "algum texto"
<div>some text</div>
input.value == "algum texto"
<input value="some text"/>
innerHTML
também retorna nós filhos e seu conteúdo de um nó pai, como:
<div id="d"><p>some text</p></div>
var d = document.getElementById("d");
console.log(d.innerHTML); //prints <p>some text</p>