That's a very, very big solution! The reason embedding works but merging throws an OOM exception is that SA has to do very little to embed an assembly; simply take the assembly bytes, compress and encrypt them, and put them into the final assembly resources.
However, to merge an assembly, it needs to build up several layers of datastructures representing the input and output assemblies, and then transform those in a consistent way according to the options selected. This takes far more memory than simply embedding a raw assembly. There's no hardcoded limitation, it's only limited by the amount of available RAM in your computer and various limitations imposed by the CLR itself.
With regards to your exception problems, there is likely a workaround for your specific situation. I recommend you contact support to open a proper support ticket; they'll be able to help you more specifically. You can contact them using the support page at https://www.red-gate.com/supportcenter/ContactSupport