Il fatto che il primo esempio (input) funzioni non vuol dire che sia stato scritto in modo ottimale, l'ideale è inserire l'elemento html all'inteno di una variabile definita, così da accedere ai vari metodi dell'elemento stesso.
Tornando al problema, il secondo esempio deve fare riferimento al textContent perche il value è solo a specifici elementi html.
il tuo esempio funziona in parte perchè stai utilizzando id, ma se invece devi fare riferimento all'elemento con classi o nomi, ecc, vedrai che quello che hai scritto non va più bene.
codice:
const div1 = document.getElementById('div1')
const div2 = document.getElementById('div2')
const testo1 = document.getElementById('testo1')
const testo2 = document.getElementById('testo2')
div2.textContent = div1.textContent
testo2.value = testo1.value