Is wp_reset_postdata() redundant after the main loop?

The first use of wp_reset_postdata() is not redundant its unnecessary.

Per the codex

Use this function to restore the global $post variable of the main
query loop after a secondary query loop using new WP_Query. It
restores the $post variable to the current post in the main query.

So only use it after your secondary query to reset things back for your main query.

NOTE: a better location to put it would be within the if instead of after the else

if ( $arg ) :
    // loop
    wp_reset_postdata();
else :
    // no results
endif;

More infor on wp_reset_postdata()