関数定義はユーザー定義クラスを定義する等してオブジェクトを作るより簡単だし、コールバック関数は渡された関数内で呼ばれるだけだから、呼び出そうとしたメソッドが存在していなかったという類の問題はもともと生じないと思うんだけど。
たとえば、Pythonの組み込み関数sorted(あるいはlist.sort)は引数keyとしてコールバック関数を取るんだけど(str.lowerなんかを指定する)、これを、特定のインターフェイスを備えたオブジェクトを受け取る形に変更した方が望ましいということにはならないと思う。