Sharepoint - Migrating our on-premises sub-sites to be modern site collections. how we will be managing the content types and site columns

This will largely come down to personal preference. Content type hubs are designed for this purpose: copy content types and site columns to target site collections. If a content type is added or updates, wait an hour(?), and it will be on the other site collections. This will work if you are using modern sites in a flat hierarchy.

However, it's been a long time since content type hubs have ever been mentioned at a conference. So following are a few other options:

Site scripts: site scripts can create content types and site columns when a site is created. Also, site scripts can be re-applied (via powershell) to an existing site to update them with changes.

Powershell (without site scripts): Powershell can certainly create content types and site columns, and it's even easier if you use the pnp powershell commands

3rd party tools: many 3rd party tools can deploy content types, ShareGate is one.

Regardless of the method you choose, sharing content types among multiple site collections is really creating multiple, independent copies of the content type. Unlike the managed metadata service, where copying terms between environments is problematic due to the fact that the terms are really identified by guid and not name, content types are identified by name, and so having a content type in several different site collections, with the same name and site columns, will make it look like there's a single content type for the user.

Personally, I currently like the powershell route, but I find the possibility of applying deltas with site scripts to be a very interesting possibility that I need to work with further.


Mike's answer is as good as you're likely to get but here's a rule of thumb that I suggest:

If you're managing your content types by hand, then use the hub. If you're managing content types in code, then deploy them to each site collection.

My preference is to deploy them in code as part of an automated site provisioning process but either approach is valid.