The idea behind using a callback is that once the PLI task or function is invoked, it will take care of the subsequent events transparently under the hood. To put a gross example, would you call a VCD dumping task everytime a signal changes or just once and then take care of the rest without any additional hassle? Callbacks are great for various other reasons as well as long as you clearly document the callee and the caller mapping - if not on paper, at least in your mind.
--
Swapnajit Mitra
"Principles of Verilog PLI": Available from all online and trditional bookstores.
http://www.project-veripage.com