current-menu-item class not working

This is happening because the menu item is created with the page page “books”, but the page currently displayed is post-type-archive-books (see classes in the body and menu item list). You can use something like

function add_nav_menu_classes($classes, $item)
{
    if (is_post_type_archive('books') && ($item->title == "Books")) {
       $classes[] = 'current-menu-item';
    }

    return $classes;
}

add_filter('nav_menu_css_class' , 'add_nav_menu_classes' , 10 , 2);

placed in functions.php to force adding the “current-menu-item” class to the books page menu item while in post-type-archive-books.

Edit:
A probably better aproach would be to actually insert the post type archive in the nav menu, then the filter becomes unnecessary.