In theory you could just use the basic Compiler product to produce a dll. In my opinion it is much more convinient to use the NE Builder as it creates an interface wich is easiert to use from .NET.
Here are a few questions that can help you decide: How many functions will be called externally? What are the data types of the inputs and outputs? (plain numbers or complex structs) Is there people in the team who can actually code and maintain low/er level C?
Usually the time it takes to call a MATLAB function (that does nothing) from an external language is about 0.2ms for simple inputs and about 1.5ms for an array of 1000 strings. A function that does nothing but returns the inputs as they were passed in takes about 0.2ms as well for simple inputs and 5ms for the 1000 element string array. The elements of the array I used were random UUIDs. You should try to do this analysis with the specific inputs and outputs you will use (ask for a demo license). While you do that, make sure you time the whole cycle, calling native C from .NET also has some overhead.
If you package your simulation in such a way that only one call to MATLAB is required for a relatively long runing task the overhead becomes negligible, so the most important factor to make your decision should be ease of development.