In short it's striking a careful balance between giving game mods the flexibility to make whatever they want, and not giving them too much low-level access that it leads to incompatibilities with other mods.
In my case, I am not letting mods extend game code directly because I have additional constraints that require mods to run on a restricted runtime. In some other games, mods DO extend game code directly and I am most familiar with Minecraft. The problem with Minecraft is that the modloaders are community-made; the game itself isn't designed to support mods so there isn't a stable modloader API between versions. If that one issue is fixed it would be possible to effectively vibecode your own version of the game and not have to reinvent the wheel by coding up the base game first. You'd also have your changes persist indefinitely and benefit from base game updates. And like I said, I think this is a powerful pattern that can be applied to plugin systems in general non-game software as well.
In my case, I am not letting mods extend game code directly because I have additional constraints that require mods to run on a restricted runtime. In some other games, mods DO extend game code directly and I am most familiar with Minecraft. The problem with Minecraft is that the modloaders are community-made; the game itself isn't designed to support mods so there isn't a stable modloader API between versions. If that one issue is fixed it would be possible to effectively vibecode your own version of the game and not have to reinvent the wheel by coding up the base game first. You'd also have your changes persist indefinitely and benefit from base game updates. And like I said, I think this is a powerful pattern that can be applied to plugin systems in general non-game software as well.