make user_id in a shortcode dynamic based on who’s logged in

One option is to register your own shortcode to act as a wrapper for the plugin’s shortcode. In the wrapper callback you would then retrieve the current user’s ID and pass it to the actual shortcode.

Simplified example,

add_shortcode( 'my_user_profile_avatar', 'my_user_profile_avatar_callback' );
function my_user_profile_avatar_callback( $atts, $content = null ) {
  // (int) The current user's ID, or 0 if no user is logged in.
  return do_shortcode(
    '[user_profile_avatar size="original" user_id="' . get_current_user_id() . '"]'
  );
}

N.B. not tested, but should work.

This would then be used as [my_user_profile_avatar] wherever shortcodes are accepted.

If you can find out the name of the actual shortcode’s callback, then using it directly instead of do_shortcode() inside your shortcode’s callback would be more efficient. Something along these lines,

function my_user_profile_avatar_callback( $atts ) {
  // (int) The current user's ID, or 0 if no user is logged in.
  $atts['user_id'] = get_current_user_id();
  // dig into the plugin's source code to find the callback's name
  return original_shortcode_callback_function($atts); // might require more parameters
}

The custom shortcode registration can be done in your (child) theme’s functions.php file or with a custom plugin.