To add to what
@Aaron Lael said...
How are you creating the callbacks? Are they being created directly from the IVR as an alternative to being placed in queue as a call, or are you offering callers an option while they wait (In-Queue operations) for a callback.
In the latter case, by design, the callback object replaces the call object, so it benefits from the accrued waiting time. This is important because folks who have already waited in the queue for some time want the callback to "keep their place" in line. (So the callback could well get serviced before a call that arrived later.)
Even if you are putting the callback into the queue from the main IVR, assuming everything has default priorities etc. it will still score higher than a call that arrives after it.
I agree with Aaron that turning up the logging will help you see what is going on.
HTH