How does the SAMD21 behave when it runs out of RAM?

Well, yes, you need to have a good idea of the maximum expected heap size.
In my code I create all the heap objects before the main loop starts. After that it's just the stack growing and shrinking. Of course I don't know what shenanigans the libraries I'm using are getting up to. I guess you would pick a number and see if the MPU triggers, then adjust accordingly.