In many cases, it’s in the order of which element describes a pokémon’s phenotype more. For example, salamence is very clearly a dragon, as it possesses highly draconic features. Noivern, by contrast, seems to be more related to a bat or bat-like pokémon, so it’s classified as a flying-type first.
Granted, this is not a system that applies to all pokémon, and this is particularly true with the flying type. Take the zubat line, for example. One would assume that by the above logic, zubat, being a bat-like pokémon, would be classified as flying/poison, rather than poison/flying, especially given its reliance on flying techniques to support that argument. However, it’s classified as poison/flying instead because back when it was first introduced to the National Dex, the term “flying” was vague and required modification. That is to say, calling a pokémon a flying-type could have meant a lot of things. (It could mean, for example, that the pokémon in question was pidgey-like, or it could mean that it’s more gyarados-like.) However, calling a pokémon a poison/flying-type clarified things more.
In some cases, it may come down to prior classification (for example, the jigglypuff line being classified as normal/fairy because it had once been classified as just normal) or even just the researcher’s preference (girafarig, for example, whose classifications are alphabetized because that’s just what Professor Elm would do). It really depends on the pokémon, but I must say that the higher up in National Dex number you go, the more likely the classification simply describes what element a pokémon is most like, followed by the second most fitting element.