Просто потому что авторы ФЯП языков обычно стремятся, чтобы так было.
Но авторы не-ФЯП языков тоже стремятся иногда, чтобы так было.
Например в C#\F# немало сделали для расширяемости.
Но в некотором смысле это обычно остаётся ограниченным, т.к. авторы каждый раз продумывают ровно один подход, и создаются для него ad-hoc механизм, вместо принципиальных подходов.