I'm not an expert on this sort of thing, so take all this with a grain of salt.
Built-in mods are defined by the hull specification of the ship, meaning that even if you
could add a built in mod to a ship , it would add the same mod to every other ship of the same class. However, there are at least
three (edit: two) other types of hull mod, and
ShipVariantAPI has a method to add each of them.
Perma - Typically D-Mods.
I assume any perma mod would automatically come with the baggage of a D-Mod (the orange bar, deployment cost reduction, removed on restoration, etc.) but I may be wrong (edit: I was). If there's a way to avoid those things, using addPermaMod might be your best bet.
Suppressed - No idea. Hopefully someone with more knowledge will come by to enlighten us. (edit: see Alex's post below)
Normal - Your everyday removable mods. Honestly, this might be your best option, as long as there's any reason a player might
want to remove your special mods. I'm pretty sure you could still ensure that they could only be added through your system.
You could certainly trigger a script that modifies ship variants via a dialogue. The main problem with that would be creating a clean interface for selecting which ship gets which mod (assuming the player gets to choose)
Hope that helps. Good luck with getting this idea working! It sounds like it could be pretty cool.