I'll just note, that at least early versions of the firmware (which still
exist "out there") included commands in the "help" output which did not
exist.
Yes, it seems to me that testing for '?' in return from such commands
is the easy way to test for support.
Commands that simply change behavior with firmware version are problematic,
unless they can be provoked to return '?' for some different argument count or values.
Commands (such as "trace") which ignore arguments and change responses
independent of anything controlled by shell commands would be most problematic.