Não sei de onde vem, mas é um bom conselho e é bastante simples de entender.
Qualquer programa elaborado com cuidado será dividido em várias partes, combinadas e compostas de várias maneiras. Quanto mais difícil for o raciocínio sobre o que qualquer parte em particular faz, mais difícil será garantir que seu programa reaja de maneira previsível.
Isolar as partes que produzem efeitos colaterais facilita o raciocínio, o teste e a depuração do restante. Reduzir o número de efeitos colaterais em cada parte que gera um efeito colateral facilitará o trabalho da parte da mesma maneira.
Se você decompô-lo ainda mais, um valor de retorno é um efeito. Efeitos colaterais são um efeito. Uma função deve produzir apenas 1 efeito (se possível) porque, quanto maior o número de entradas e efeitos que uma função tiver, maior será a dificuldade de raciocinar sobre o que realmente faz.