paged > max_num_pages won’t throw 404

You won’t get a 404 because WP can find the page, and it then delegates the request to the template file where you added your own logic.

You could build your own 404 handling in that file, but a better way is to use a the archive.php (or archive-post.php for just this post type) to render the output, and use the pre_get_posts action to manipulate the WP_Query that is used to find posts (customize page size). If you’re doing it that way, you’ll find that WP will trigger a 404 correctly if the requested page is greater than the last available page.