For anyone else that experiences the above issue, I've done a bit more digging to try and get to the core of why NCrunch is behaving differently to other test runners in this situation.
Because of the need to support pre-v4 versions of the .NET framework, NCrunch makes use of .NET framework 2.0 assemblies in some of the code it inserts for instrumentation. In v4 of the .NET framework, Microsoft introduced major changes to the security model that aren't seamlessly backwards compatible with the old CAS approach. This means that inside the NCrunch test environment, .NET v4 and above code may experience security related issues when attempting to impose constraints (or remove constraints!) using assembly-level attributes.
There is a useful article that goes through the motions of
troubleshooting an identical issue encountered with Visual Studio MSTest's built-in code coverage.
Any solution to this issue from the side of NCrunch will require some re-engineering and looks like it will still be a long way out. If you encounter this problem, I recommend either using the compiler conditional shown above to deactivate the assembly-level security attributes for NCrunch builds, or to introduce the following attribute (perhaps with an NCrunch compiler conditional around it if you want to be certain of normal behaviour outside the NCrunch environment):
[assembly: SecurityRules(SecurityRuleSet.Level1)]
I hope someone finds this useful.
Cheers,
Remco