tiny_mce_before_init is not trigger

Looking at the contents of class-wp-editor.php, it looks like tiny_mce_before only triggers if you are not using the Teeny version of the editor:

/*
 * For people who really REALLY know what they're doing with TinyMCE
 * You can modify $mceInit to add, remove, change elements of the config
 * before tinyMCE.init. Setting "valid_elements", "invalid_elements"
 * and "extended_valid_elements" can be done through this filter. Best
 * is to use the default cleanup by not specifying valid_elements,
 * as TinyMCE checks against the full set of HTML 5.0 elements and attributes.
 */
if ( $set['teeny'] ) {

    /**
     * Filters the teenyMCE config before init.
     *
     * @since 2.7.0
     *
     * @param array  $mceInit   An array with teenyMCE config.
     * @param string $editor_id Unique editor identifier, e.g. 'content'.
     */
    $mceInit = apply_filters( 'teeny_mce_before_init', $mceInit, $editor_id );
} else {

    /**
     * Filters the TinyMCE config before init.
     *
     * @since 2.5.0
     *
     * @param array  $mceInit   An array with TinyMCE config.
     * @param string $editor_id Unique editor identifier, e.g. 'content'.
     */
    $mceInit = apply_filters( 'tiny_mce_before_init', $mceInit, $editor_id );
}

If the config can work for both Tiny and Teeny, you could hook on both filters to modify the configuration.