Why can't I script out CLR assemblies with SMO in Powershell?
The SqlAssembly class doesn't have a schema property - so this filter is silently removing any potential results:

$assemblies     = $sourceDb.Assemblies | Where-object { $_.schema -eq $schema  } 


I'm not sure whether you need to use the owner property in the filter instead or ignore ownership entirely.