This should be a list of strings since that makes the most sense. I know that Vim wants the completer function to return a string with items separated by newlines, but implementing that API should be the responsibility of the SubCommandsComplete function which should take the list of strings and build the required return value.

DefinedSubcommands should also just return the list of strings too.