Почему в некоторых языках функции могут быть вне классов, а в других нет?
В Java вообще нет функций, только методы. Методы по определению не могут быть вне классов. А сделано так потому, что Java проектировалась как язык принуждающий писать в ООП.
в котлине тоже самое что и в джаве, по тем же правилам, просто сам котлин может генерировать "скрытый" объект которому принадлежит метод, имитируя "независимую" функцию. 
В джава кстати тоже есть независимые функции