3) dataset: позволяет устанавливать свои собственные атрибуты, которые не будут мешать определённым атрибутам. Например, свой собственный id.
<div id="box"></div>
<script>
box.dataset.isLoaded = true;
box.dataset.age = 21;
box.dataset.id = "test-61";
box.textContent = box.outerHTML;
</script>
4) setAttribute: позволяет устанавливать как свои собственные, так и встроенные атрибуты. (если идёт речь о HTML, в XML вы всё определяете сами)
<div id="box"></div>
<script>
box.setAttribute("data-is-loaded", "true");
box.setAttribute("data-id", "test-61");
box.setAttribute("title", "Пример подсказки!");
box.setAttribute("data-title", "Пример чего-то своего!");
box.textContent = box.outerHTML;
</script>