Just a datum point on Migration Assistant...
I recently helped an individual transfer her login directory from an old MBP having TB2 ports to a new MBP having USB-C ports. Since I have never used Migration Assistant before, I decided to try it for this transfer. I connected an old TB2 cable with a TB2-to-USB-C dongle between the two machines. Migration Assistant was extremely easy to set up and transferred her login directory and her applications over the cable in less than two minutes. I was impressed that this worked so smoothly.
Personally, I don't use Migration Assistant because of how I've organized my directory trees. I use Git, rsync (the underlying protocol/utility of Carbon Copy Cloner), and an external TB3 SSD for the initial transfer from an old to the new machine. Everyday, I use Git and rsync over WiFi for backing up to several locations in a timely fashion. I also like the fact that I can use Git and rsync for backup from Linux machines where Time Machine is not available. (I used to use Time Machine, but, at least in my hands, my TM backups eventually all had problems that were essentially not fixable except by restarting the TM backups. I have not experienced these troubles with Git and rsync. Thus I abandoned TM and instead rely on Git and rsync. I haven't used TM for years, so perhaps it is now more robust and doesn't suffer these troubles anymore?)
And, most recently (and I know I'll receive a lot of blowback for this, so go ahead), I wrote over 5000 lines of bash code to implement an antiquated backup scheme! The reason for so many lines is that the code is quite robust, checking that everything worked properly and not allowing the user to continue if problems are encountered. My scheme uses "tar" (tar, by the way, is still used by Apple for their diagnostics), bzip2, gpg2, shasum, split, cat, echo, tee, awk, grep, caffeinate, plus a few other utilities to make a backup of a directory tree, compress the backup, calculate its hash code, encrypt it with 4096-bit RSA keys, split the resulting backup file into 1GB subfiles for easy transfer to multiple thumb drives, calculate hash codes for all of the subfiles, transfer the subfiles to another location, verify the hash codes for the newly transferred subfiles, merge the subfiles back into the encrypted, compressed tarred backup, verify its hash code, decrypt the backup, and uncompress and unpack the backup into a copy of the original directory tree, all while writing a log file of everything that was done. A final rsync over an ssh tunnel then verifies that all directories and files were transferred properly. Now you may be wondering why I went to this trouble. I needed to transfer about 500 GB through the mail (letter) in a secure way so that even if the thumb drives were stolen they would be useless. This scheme accomplishes that task. (The downside is that even on a M1 Max, the bzip2 compression and gpg2 encryption with a 4096-bit key along with verifications of 500GB takes several hours! The upside is that only a single bash command line is needed to perform the backup and a single command line to unpack the backup at the other end. And this also works not only under macOS but also Linux.).
Solouki