Welcome to the forums @DavveDP!
I would say it depends on what you are wanting to do. For the most part, you should be able to do almost anything as a plugin, but the keyword is almost. Anything not exposed to GDScript and C# will still be inaccessible when writing a plugin. This means some classes, functions, and data structures will be inaccessible when writing a plugin, but if you were writing a module, you could potentially access these things if they are marked public
in the source code.
From what I have seen, that is the biggest difference between a module and a plugin. Other little differences are you will need to use C++ when writing a module (as opposed to GDScript or C#), modules have to be compiled with the Godot source code while plugins do not, and modules are always loaded while plugins can be enabled/disabled.
If you are looking to avoid C++ and use C# instead, then you will want to write a plugin. I have not tried writing plugins in C#, but I have done some plugin work with GDScript and its a pretty flexible system that can accomplish a lot of things. I would generally suggest going down the plugin route first anyway, and if you hit limitations due to how plugins work, transferring the code to a module should be possible with relative ease.