crossgen1 avoided emitting string fixups for strings used on exception throwing paths. crossgen2 is missing this optimization.
Note that this optimization produces a bit larger code, but saves time during startup by avoid string constant allocations.
See #47183 for more context.