Using Pagination for Custom Post Type and keeps returning 404

First things first, you’re throwing away the default query for the page (after it hits the DB and sets up the globals) with your custom query. The pagination is referring to the default query for the template, which is defined in Settings > Reading, plus you’re hitting the DB twice for the same thing, which is hideously inefficient.

If you want to change the options of the main query for a template you should hook into pre_get_posts and modify the default query before it’s sent to the DB, like so:

add_action('pre_get_posts', 'wpse276456_custom_tax_query');

function wpse276456_custom_tax_query($query) {
  if(is_tax('page-name') {
     $query->set('posts_per_page', 1);
     // Add more calls to $query->set as necessary
  }
}