WordPress Multisite user activation hook from email

As discussed in the comments the fix is to put your wpmu_activate_user hook into a must-use plugin under /wp-content/mu-plugins/.

The problem is that the email’s activation link handler, wp-activate.php, defines

define( 'WP_INSTALLING', true );

(I guess to cover the case it’s running in the context of a newly provisioned site?) and wp-load will not load standard plugins if this is set: wp_get_active_and_valid_plugins() returns an empty array.

Hence your hook wasn’t being registered in the wp-activate case. So to ensure this code is loaded and run we have to use a mu-plugin instead, which are loaded unconditionally even in the installing case.