Иммутабельность - это про гарантию, что ты случайно не изменишь то значение, которое тебе передали извне.
И что функция, в которую ты передал своё значение, не изменит его.
Вот тупой пример:
let today = now().date
let tomorrow = today.addDays(1)
assert(today != tomorrow)
И вот если DateTime мутабельный, то мы можем словить ошибку в этой ситуации.
Иммутабельность же позволяет на корню этого избежать.
И из этого же следует то что мы можем с минимальными усилиями делать историю изменений, безопасно распараллеливать обработку данных.
А отстутсвие сайд-эффектов позволяет делать вычисления ленивыми, и тоже даёт возможность безопасно распараллеливать, тк нет привязки к порядку операций.