It's kindof cumbersome following logic like this to figure out what help strings are generated in what cases.  I think it would be simpler to have the function cover only the standard case, and have the invokers supply the help strings for the non-standard cases, like

    def add_name_argument(subparser, help=None):
        if help is None:
            subcommand = subparser.prog.split()[1]
            help = 'name of merge to {0}'.format(subcommand)

        subparser.add_argument(
            '--name', action='store', default=None, help=help,
            )

and then later, for example,

    # record:
    add_name_argument(
        subparser,
        help='name of merge to which the merge should be added',
        )

    # finish:
    add_name_argument(subparser)

It costs a little bit of string duplication but IMO makes the code easier to read.