Не срабатывает свойство CSS при динамической вставке в JS?
Ну, у вас в оригинальной разметке есть перенос строки.
Браузер понимает, что эти «слова» разделены между собой.
Либо поставьте перенос строки, либо после каждого <span> поставьте пробел.
<div class="block"><span>1</span> <span>2</span> <span>3</span></div>

*если нет переноса строки или пробела, то это типо как одно слово получается. А text-align: justify не разрывает слова.
Исправьте ваш JS код:

let temp = document.getElementById('js');
temp.innerHTML = (`
	<div class="block">
		<span>1</span>
		<span>2</span>
		<span>3</span>
	</div>
`);