@neso ちゃんと確認したわけじゃないけど「textContentの型(この場合string)はプリミティブだから中身を変える方法がなく代入してもコピー的な扱いになるから」というような理由のはず。一方で「getElementByIdの返り値の型(object)は構造型だから変数に代入してもコピーは生じないので中身の変更が効く」のでこの返り値を変数に代入して中身のプロパティを変更することは有効になるんだと思う。
https://developer.mozilla.org/ja/docs/Glossary/Primitive