Callback-функция может меняться от вызова к вызову основной функции.
Например, метод Array.prototype.sort(), в который передаётся функция, определяющая порядок сортировки. В зависимости от переданной callback-функции метод может сортировать как числа, так и строки или объекты, как в возрастающем или убывающем порядке, так и в более сложном, например по расстоянию от заданной точки.
Кстати, onload в вашем примере - это тоже callback-функция, только переданная как свойство, а не аргумент другой функции.