Все три команды работают по-разному.
tag.append(document.createTextNode(text)) - эта команда создает текстовый узел с содержимым, указанным в переменной "text", и добавляет его в конец элемента "tag".
tag.innerHTML = text - эта команда заменяет всё содержимое элемента "tag" на HTML-разметку, указанную в переменной "text". То есть, если переменная "text" содержит "текст", то в элемент "tag" будет добавлен жирный текст.
tag.textContent = text - эта команда заменяет всё текстовое содержимое элемента "tag" на значение переменной "text". То есть, если переменная "text" содержит "текст", то в элементе "tag" будет отображен именно этот текст, а не HTML-разметка.
Как видите, каждая команда выполняет свою уникальную функцию.
