А кто так говорит ?
Во превых, само определение "функционального стиля" слишком размыто, надо понимать что "функциональный стиль" подразумевает потокобезопасность и стэкобезопасность, потому требует реализации соответствующих тайпклассов для параметрического полиморфизма. Нужно понимать что в "Функциональном стиле" есть "наследование" и "полиморфизм" просто это разновидность свободных структур данных и свободных преобразований (Free Monad, Free Applicative), в рамках соответствующих алгебраических типов данных. Т.е. само наследование становиться значением, точно так же как и функция... а параметрический полиморфизм напрямую зависит от соответствующих неявных реализаций и неявных внедрений зависимостей - обычно делается с помощью плагинов к компиляторам, или уже встроено в языки.
Side effect'ы и мутации есть и в функциональщине, просто шутка про "как функциональный программист меняет лампочку" (сначала копирует мир, а потом меняет в новом экземпляре) в ряде случаев не позволяет писать эффективные реализации - для подобных случаев есть ряд абстракций, которые делают сам побочный эффект и мутацию значением.
В "функциональном стиле" тоже есть недетерминированность, всякие race condition'ы, dead lock'и, live lock'и, double acquisition и прочее... просто для управления ими есть соответствующие типы данных и на уровне статического анализа можно принимать решения как именно с этим нужно работать.
Другое дело конкретные реализации TypeClass'ов, которые уже требуют формальной верификации и соответствующих тестов.
Благо проверки законов (laws check) могут быть выполнены в тестах неявно, для всех существующих внедряемых реализаций.
Для пример, что Scala что Kotlin вроде бы и являются функциональными языками... но никто толком на них не пишет в "функциональном стиле", просто потому что привыкли к концепциям ООП. А для "функционального стиля" используется обилее макросов, пару плагинов к компилятору, и соответствующие правила формальной верификации алгебр и законов... люди редко хотят в такое окунаться, но и обратно не вылазят %)
Для ознакомления стоит познакомится с принципом параметрического полиморфизма на TypeClass'ах в функциональном программировании и шаблоном Концепт (Concept), на котором, кстати, работает большинство интерфейсов того же golang'a.