Регистрировать функцию в глобальную область видимости нам нужно тогда, когда нужен доступ к ней из другого места и нет возможности предоставить его через локальную область видимости.
Слово "нужно" здесь условно. Вас никто не заставляет пользоваться глобальным пространством, если нравятся другие способы "общения" разных частей кода, а о вкусах не спорят.
Например, у вас на сайте есть два полностью независимых виджета, и первому для наглядности нужно знать о наличии второго или даже иметь доступ к его возможностям. Сделать это можно как раз через глобальную переменную.
А вообще писать window.fn = function совсем не обязательно. Достаточно объявить функцию глобально.
function fn() {
}