The general rule of thumb for adding post-format support to a theme has always been to use a theme setup function hooked in the after_setup_theme action that included the add_theme_support( 'post-formats', array( 'aside', 'quote' ) ); (as an example).

This is all fine and dandy but if you want to add additional post-formats via a child-theme you will have to completely re-write the theme’s setup function … but wait, why not add apply_filters into the add_theme_support() call?

If we started with the following example theme setup function code:

if ( ! function_exists( 'wpfirstaid_theme_setup' ) ) {
    function wpfirstaid_theme_setup() {
        add_theme_support( 'post-formats', array(
            'aside',
            'quote'
        ) );
    }
}
add_action( 'after_setup_theme', 'wpfirstaid_theme_setup' );

We could amend it to be more child-theme friendly with the following modification:

if ( ! function_exists( 'wpfirstaid_theme_setup' ) ) {
    function wpfirstaid_theme_setup() {
        add_theme_support( 'post-formats', apply_filters( 'wpfirstaid-post-formats', array(
            'aside',
            'quote'
        ) );
    }
}
add_action( 'after_setup_theme', 'wpfirstaid_theme_setup' );

Now, all a child-theme author needs to do is use add_filter in something along these lines:

function wpfirstaid_child_theme_post_formats() {
    return array(
        'aside',
        'quote',
        'link'
    );
}
add_filter( 'wpfirstaid-post-formats', 'wpfirstaid_child_theme_post_formats' );

One thing to keep in mind is all post-formats need to be re-defined as the content of the array used by the parent-theme will be replaced by the content of the array being used by the child-theme.