Sometimes code uses a resource (that it of course has permissions for) in a method that does not actually expose the resource itself to callers, in which case it is often desirable to allow callers without the permission for the resource to still be able to call and have it work. In this case the code is in effect vouching for its callers and promising not to compromise overall security by exposing the resource to potential malicious callers that might use it to indirectly access it.
For example, calling unmanaged APIs in general is a protected operation that requires a high degree of trust. However, all APIs do not necessarily involve security problems: some specific ones may be completely harmless. For example, a system API that returns the current time of day may be deemed to not have dangerous security implications. To enable code to use this functionality without requiring a high degree of trust, the managed code that implements this may assert its high trust and call the API. Otherwise, only code permitted to call any system API would be able to use this safe and useful function.