Pretty much the same because at the end using AGI or System, you re running a third part script or command in the Asterisk framework, difference I have found AGI provide a debug tool and system () allows you execute Linux command directly from Asterisk
Func_odbc can help a lot when you have many points at dialplan to collect data and in this way you will have a few functions for all your stuffs.
When you use AGI you must avoid to have a single point of failure splitting your necessities across more than one script.