Both reigning and regnant are related to the same Latin noun, regnum.
Why is the ‹gn› spelling pronounced [n] in the first word but [gn] in the second?
My (uneducated) guess would be it has to do with the long vowel sound before the [gn]. It seems to create difficulty to pronounce the [g] sound after a long vowel sound.
Other examples are feign (long), indignity (short), benign (long).
This is probably due to a number of factors, mentioned by commenters.
First, /gn/ is not an allowed syllable coda in English. This prevents reign, malign from ending in /gn/. However, there is no restriction across syllables; regnant, malignant have an allowable /g.n/.
Also, the two words followed different paths to get here: Reign was borrowed from Norman French, and was spelled <reyne> as early as 1300 indicating the lack of a hard [g] sound.
OED Etymology: < Anglo-Norman rengne, reng, reyn, Anglo-Norman and Old French reigne, Old French raigne, raine, reine, Anglo-Norman and Old French, Middle French regne, Middle French reyne, French règne
Regnant appeared later, and was borrowed directly from Latin (though influenced by French), with the hard [g] intact.
OED Etymology: < classical Latin regnant-, regnāns, present participle of regnāre reign v., partly after Middle French regnant (French régnant)
Finally, don't fall into the trap of thinking the spelling somehow represents the "true" form of the word that is being strangely mispronounced. In English, spelling is merely a hint about a word's pronunciation. "Reign" was borrowed into English already pronounced /rejn/, and the existence of the letter <g> is a historical artifact.
I'm not convinced that the distinction has any basis in an etymological difference between words borrowed from French or Latin, because it doesn't appear that either language used a hard g in these etymons. Most sources indicate that the pronunciation of gn in Latin sounded like ngn, or /ŋn/. This Latin pronunciation guide offers that description:
gn had the sound of ngn as in English wing nut: magnus, benignus, ignāvus
John Well's Phonetic Blog offers a similar account:
Most English-speaking classicists, I think, say ɡn in Latin words such as agnus, dignus, regnum. But choral singers and Catholics tend to be influenced by Italian and say nj [or /ɲ/]. In classical Latin gn appears to have stood for neither ɡn nor ɲ, but rather for ŋn, thus aŋnus, diŋnus, reŋnũ (Allen, Vox Latina, CUP 1965).
The point here is that if Latin speech pronounced "gn" in words like "regnum" as "ngn" /ŋn/, the hard g in English could not have come from either Latin or French. This is why I shy away from pinning the use of hard g on differences in etymology between reign and regnant.
Other words of French origin
If the distinction really had roots in Latin vs. French etymology, we would be hard-pressed to explain the myriad other instances that follow the pattern wherein the g is dropped only in the last syllable of a word, regardless of whether the words derive from French or Latin.
Consider some other words where the hard g is pronounced in English but not in derivative French. [All etymology notes from OED]
dignity: Old French digneté, French dignité
ignore: French ignorer, or Latin ignōrāre not to know
pregnant: French pregnant; Latin praegnant-, praegnāns.
signature: French signature; Latin signātūra.
Compare this etymology of "signature" with the etymology of "sign."
Whether the words derive from Latin or French, the tendency in English is to pronounce the hard g when the digraph is neither at the beginning nor the end of the word.
It makes sense that the g remains silent in a first or final syllable simply because English pronunciation has no way to retain the hard g otherwise. The appearance of the hard g in the middle of a word could be explained as either a drift from the Latin velar nasal /ŋ/ (think "ng") or the French palatal nasal /ɲ/ (think Spanish ñ), or as a result of phonetic pronunciation of the spellings.
A possible clue to the process words underwent attaining the hard g can be found in old spellings of some of these words of French origin, which retain the velar nasal /ŋ/ we would expect in Latin pronunciation.
Pregnant has late Middle English prengnavnt, pringnant
Dignity has Middle English dyngnete, dingnete
These early spellings with the presence of ng suggest that the gn pronunciation might have used the Latin pronunciation /ŋn/ earlier than the hard g, supporting the argument that the hard g developed within English.
Some words of French origin have retained the silent "g," still treating gn as /ɲ/, at least per OED:
I think this is another clue that the hard g developed within English. While the OED describes poignant as retaining a palatal nasal sound, it is sometimes pronounced (mistakenly?) with a hard g, as a questioner observed on this site. In that sense, the drift can almost be seen in progress. At the least, the fact that its pronunciation is confusing to English speakers or learners seems indicative of the norm that English expects a hard g from gn in the middle of a word.
Vignette, which entered the English language as recently as the 18th century, retains the French pronunciation probably because it was adopted into English more recently than the other words cited.