Потому что после перезагрузки в localStorage уже лежит mainContent === 'shown', setTimeout не отрабатывает, блоки спрятаны
import './style.css';
const timeout = 5000,
content = document.querySelectorAll('div.main-content');
if (localStorage.getItem('mainContent') !== 'shown') {
setTimeout(() => {
content.forEach(i => i.classList.add('shown'));
localStorage.setItem('mainContent', 'shown');
}, timeout);
} else {
content.forEach(i => i.classList.add('shown'));
}
div.main-content {
display: none;
}
div.main-content.shown {
display: block;
}
<div class="main-content">1</div>
<div class="main-content">2</div>
<div class="main-content">3</div>