I have no actual sources to back this up with (if anyone knows of any, please feel free to adduce), but it appears to me to be simply a matter of convention based in having to make a choice between two options.
In Japanese, there is a complete merger of all non-nasal consonantal morphophonemes in position before another consonant: they all assimilate completely to the following consonant. Some transcribe the result of this merger phonemically as a generic ‘moraic obstruent’ phoneme written /Q/, while others transcribe it according to the following consonant, but the outcome is the same.
That is, for any sequence of morphophonemes |TC| (where T is any consonant that is not nasal and C is any consonant at all), the phonetic output is always [Cː], a geminate of the second consonant. In phonemic writing, some will write this /QC/, others as /CC/.
The ‘moraic obstruent’ approach is practical because it fits with Japanese writing, which is fully moraic: the phoneme /Q/ corresponds precisely to the sokuon っ.
If the first consonant is a nasal consonant, however, there is only partial assimilation: the nasal assimilates to the following consonant’s place of articulation, but remains nasal and voiced. That is, for any sequence of |NC| (where N is any nasal consonant and C is any consonant at all), the output form is [NC] as well.
To summarise:
Morphophonemes |
Phonemes |
Output |
Kana |
|tp| |
/Qp/ |
[pː] |
っぱ |
|rs| |
/Qs/ |
[sː] |
っさ |
|pb| |
/Qb/ |
[bː]¹ |
っば |
|nk| |
/Nk/ |
[ŋk] |
んか |
|md| |
/Nd/ |
[nd] |
んだ |
Notice how all the cases where the first consonant is non-nasal have っ, while the ones where the first consonant is nasal have ん. Or, if we go by the phonetic output form, how all the cases where the output is a single, geminate sound have っ, while the ones beginning with a nasal sound have ん.
In principle, these developments hold true for all values of C, whether nasal or not, so the phonetic outcome of |pn| → /Qn/ is [nː], matching |pb| → /Qb/ → [bː] perfectly. The trouble is that the outcome of |mn| → /Nn/ is also [nː], which is completely identical. In other words, before nasals, the merger of the first morphophoneme in the sequence is actually complete: all consonants assimilate completely to the following nasal.
So how do you represent that in writing?
In theory, you could be totally stringent and write っな when the first consonant is underlyingly a non-nasal morphophoneme and んな when it is nasal. But that’s easier said than done, because it’s not always clear what the underlying morphophoneme is even to an etymologist, much less to the average person who’s just writing a word. So it makes more sense to just use one or the other consistently.
There’s no single way of choosing that inherently makes more sense than the other here. You could argue that, since the output is always a single, geminate sound, っ should be used, just as it is for the other geminates; or that, since the output begins with a nasal sound, ん should be used. When Japanese spelling became fixed, the latter argument apparently weighed heavier than the former.
Another factor may be the restriction on voiced geminates in Japanese (see note below): settling on んな rather than っな happened quite a while ago, before the influx of (primarily English) loan words containing voiced geminates, so at the time, sequences like っば っが っだ were virtually nonexistent. っ itself was then more obviously associated with voiceless geminates specifically, and it may have felt odd at the time to use it for a fully voiced, resonant geminate like [nː].
Notes
1. In native Japanese words, voiced geminates do not occur, and the outcome would possibly be /Nb/ → [mb] instead. In loan words, though, voiced geminates are perfectly allowable. A bit more detail is available in the Wikipedia article on Japanese phonology.