After a bit more research, I have found a way to do this from this post https://wordpress.stackexchange.com/a/136064/54989
Rather than using unset as I had done previously, remove_menu_page works for Duplicator:
remove_menu_page( 'duplicator' );
so my complete code now looks like:
function jitb_remove_admin_menu_items() {
if ( !current_user_can( 'manage_options' ) ) {
$remove_menu_items = array( __( 'Comments' ), __( 'Links' ), __( 'Posts' ), __( 'Media' ), __( 'Users' ), __( 'Tools' ), __( 'Settings' ), __( 'Profile' ), __( 'Testimonials' ), __( 'Appearance' ), __( 'Portfolio' ), __( 'Products' ), __( 'Orders' ), __( 'Coupons' ) );
global $menu;
end ( $menu );
while ( prev( $menu ) ) {
$item = explode( ' ',$menu[key( $menu )][0] );
if( in_array( $item[0] != NULL?$item[0]:"" , $remove_menu_items ) ){
unset( $menu[key( $menu)] );
}
}
remove_menu_page( 'duplicator' );
}
}
add_action( 'admin_init', 'jitb_remove_admin_menu_items' );