It won't crash. At most, it might lag when loading the map.
Sometimes it's easier to use obvious workarounds than to overcomplicate things. To solve this problem without regions and triggers (and generally, without any settings for a garrison, even without assigning it a name), you'll need a brief introduction to OOP, a discussion of several new, complex functions, and an understanding of tables in Lua.
Jewilly, if you're interested in a more elegant solution, I'll just say what it's based on:
Using the IsTilePassable function, you can check the location of blocked cells relative to the center of the object (for a garrison, one is above, one is below). After identifying the garrison's orientation, the hero is simply moved to the other side using SetObjectPosition with teleportation type 0 (without animation), if the hero's owner is not a banned player (all of this is done through a touch trigger).
And for aesthetics, you can create a "Garrison" class with methods like BanPlayer, UnbanPlayer, and other such things, if you want to add any effects, additional messages, etc.
When I first started writing the script for the map, with great ambitions, I started implementing my own structures and inventing patterns, essentially incorporating the main principles of OOP into my code.
However, since the map is not an RPG and various mechanics are not very deeply developed, I realized that I spend 2-3 days (as you know, there isn't always time to tinker with Heroes) creating some interesting functionality, considering 1) all the rules of clean code, 2) all the textbook postulates, 3) my creativity, and 4) the main concept of OOP, and I do everything beautifully. Then this functionality is used in the form of 30-40 lines of code, and then it just sits there as a dead file.
I estimated the time it would take to write the script in this way, and considering that a very large part of the map development is extremely tedious (at least, I find it difficult to come to terms with the very limited functionality of the scripting library), I decided to write everything using adequate, but still somewhat hacky methods. Like playing around with global variables back and forth, and so on. Besides, refactoring my Heroes code is difficult, hence some of the functionality lies as dead weight because there is no time to redo it (It works like a charm, and it's a pity to delete it!!!).
I don't know why I'm saying all this, I guess it's just been building up. However, I am writing documentation for the script, and I hope that some newbie will be able to copy and paste some cool things from it later.