It's not that they "made" their language have no side-effects, it's more that they made a choice to use a lisp/functional design for the language which gives the advantages of that family of languages languages... advantages like limited side-effects and formal approaches for proving "correctness" of programs. It's a really clever design choice IMO for a smart-contracts language.