I found a solution on my own to override the save function that fixes it but I still can’t figure out why it is even happening to begin with. This required adding this to the end of my save_post function.
// original publish override to fix a bug that was preventing speaker books from publishing on save
if (isset($_REQUEST['original_publish']) && $_REQUEST['original_publish'] == 'Publish') :
$poststatus = $_REQUEST['original_publish'];
// // // unhook this function so it doesn't loop infinitely
remove_action( 'save_post', 'cpt_save_post' );
// // // update the post, which calls save_post again
wp_update_post( array( 'ID' => $post->ID, 'post_status' => $poststatus ) );
// // // re-hook this function
add_action( 'save_post', 'cpt_save_post' );
endif;