The DLL would need a reference to your engine, which is a bit inconvenient, since this will make it more difficult to change stuff in your engine -- you have to be careful not to break backwards compatibility to your DLL developers.
Another solution would be to create a library that only contains the interfaces required by the mod designers:
public interface IMod
{
void OnLoad(ModLoadedArgs args);
}
This interface library would be referenced both by your engine and by the mod developers -- it's the contract between the two systems. This interface would change rarely, and you are free to develop and modify your engine as you wish.