Basically, callfunc was the old system, before you were able to create forwards and dynamic natives.
You can still use when you want to support a plugin that is not yours and you want people can use your plugin and the other plugin, but if it if for your own usage, i suggest to edit the plugin that is not yours so you can add forward or dynamic native in it.
single forward, multi forward, dynamic native, depends on your needs, and not harder to use than callfunc ;)