post_type not working when tag__in is present?

This is not a bug that I have heard of so I would make sure you do not have a plugin or some other code filtering pre_get_posts.

I would recommend checking the SQL that is run to try and debug.

$query = new WP_Query($args);
echo '<pre>'; var_dump($query->request); echo '</pre>';

Using that you can verify if the WHERE clause includes the post_type for ‘page’ or ‘any’.