Migrated D8 site breaks when cache_discovery is truncated
Did my normal process of installing a clean site on the new server,
  and then copying the modules, themes, and file folders from the old
  dev site to the new dev site,


In D8 all information from annotations and yaml files are newly discovered on a cache rebuild. And your mix from the clean site install and the copied files did not fit together. This could be one file, which is left over from an older core or module version and you get this problem. So the solution is, to copy complete site archives or when updating remove the old code completely before replacing it.