WordPress multisite – is it possible to have different taxonomies for each site?

Sure, you can.

Each site in multisite is completely independent, so you can have completely different CPTs, taxonomies and… everything.

The problem is that if you register the CPT via a plugin, and you enable it in all sites (or network-activate it) and you use the same plugin to register taxonomies, you’ll have same taxonomies everywhere.

The simplest thing would be to create a plugin to register the CPT and taxonomies that you want in all sites (if any), then network-activate it.

After that, you can create different plugin for different taxonomies.

For example, if you “main” plugin does:

add_action('init', function() {
   register_post_type( 'mycpt', [ ... ] );
});

You can have another plugin that does:

add_action('registered_post_type', function($cpt) {
   if ( $cpt !== 'mycpt' ) {
       return;
   }
   register_taxonomy( 'taxonomy_1', 'mycpt', [ ... ] );
   register_taxonomy( 'taxonomy_2', 'mycpt', [ ... ] );
});

then, another that does:

add_action('registered_post_type', function($cpt) {
   if ( $cpt !== 'mycpt' ) {
       return;
   }
   register_taxonomy( 'taxonomy_3', 'mycpt', [ ... ] );
});

So you can activate on specific sites the plugins that activate the taxonomies you need.

Thanks to the fact that you use registered_post_type action, if the “main” plugin is not activated, even if the secondary plugin are activated they will do nothing.