I also think there should be another data section in each command-line program that contains an abstract layout of a dialog for entering arguments, as was customary in Macintosh Programmer's Workshop (http://en.m.wikipedia.org/wiki/Macintosh_Programmer%27s_Work...).
Shells could use that layout to make it easier for users to enter lesser used commands or command options. Some shells would use curses to layout these dialogs, others would choose to use a 'real' GUI. Alternatively, separate tools would be written, and shells would use a COMMANDO shell variable to pick the one the user prefers.
I'd have a real hard time agreeing with that. But I could make an exception for /bin/true.
I agree that help text should be the purpose of the manpages.
A version number (or pointer to version string) could be one of the fields in the file header, to be read by a tool ("version"?) and displayed that way.
This way you still get versioning and documentation, without a massive duplication of functionality across every single binary.
http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/true...
I think the argument can be made that command lines tools shouldn't provide versioning and help text at all - leave it up to the manual pages.