Причина проста — в случае, когда функция обратного вызова декларирована как указатель на метод класса,
вызвать из него обычную функцию не вызывает большого труда (даже если придётся сделать лишний класс для этого).
В противном же случае, когда ф-я обратного вызова декларирована как указатель на обычную ф-ю,
а требуется вызвать метод класса, то без серьёзного хака типа MakeObjectInstance такая проблема
не решается вообще.
Потом, если ты не хочешь создавать объект, ты всегда можешь назначить обработчиком
событий классовые методы класса:
TDummy = class
class procedure EventHandler(Sender: TObject);
end;