Plugin default settings hook

I’d use a filter. You can remove this:

if (function_exists('bf_new_defaults')) {
    return bf_new_defaults( $default_settings );
} else {
    return $default_settings;
}

and replace it with something like this:

 return apply_filters('bf_filter', $default_settings)

The following is a truncated, proof of concept version of the code so you can see how $default_settings gets altered.

add_filter(
    'bf_filter',
    function($default_settings) {
        var_dump($default_settings);
        $default_settings[] = 4;
        return $default_settings;
    }
);
$default_settings = array(1, 2, 3);
var_dump(apply_filters('bf_filter', $default_settings));

Your filter has to be added before bf_set_defaults runs so you may have trouble with the fact that plugins load before themes, but it depends on how (when) the function is used.