Remove all nav menu classes ( but keep useful ones… )

You could work with a white-list and replace the regular expression with something more readable:

add_filter( 'nav_menu_css_class', function( $classes ) {

    $allowed = [
        'menu-item-has-children',
        'current-menu-item'
    ];

    return array_intersect( $classes, $allowed );
});

That would make it easier to maintain the white-list too.