I found an answer! :D
The culprit is none other than the Dual Type Glitch.
In Generation I, Pokémon with two types that have a weakness and resistance to the same type receive neutral damage from that type, but the incorrect message is displayed.
For example, Grass-type moves do neutral damage to Gyarados, but if Gyarados is hit by a Grass-type move, the game erroneously states that the attack is "not very effective...".
The game prioritizes on which message to display for each 'special' scenario (where normal damage is not dealt) based on each scenario's internal ordering. The higher the ordering determines what message the game will display. Grass against Water as 200% damage for instance is the 4th entry, whilst Grass against Flying as 50% damage is the 27th. Consequently in this example the game chooses the message for scenario #27, returning the wrong message "It's not very effective...".
If you understood that, take a look at the chart. Bug x2 against Poison is higher on the chart the Bug x0.5 Flying, therefore it will show the message that it is Super Effective. And it will still do neutral damage, it's just that the wrong message is displayed.