Dark was 100% a balance to Psychic in Gen II, Psychic dominated the typing tree and what little multiplayer competition there was during Gen 1 (this was also due to the fact that there was no separate "Special Attack" and "Special Defense" in Gen 1, only "Special" which covered both and made Psychics who normally excelled in the stat both powerful AND bulky).
BUT one can see reasoning behind the chosen typing beyond convenience of balancing the types.
A key thing to note is that the Japanese name for the "Dark" type is more closely translated to "Evil" or "Sinister." This is why dark types have many underhanded or villainous move names like "Quash," "Sucker Punch," "Fake Tears," "Torment," and "Nasty Plot." Also why the Fairy type, which embodies goodness or purity, has a type advantage.
Alternatively, Fighting type embodies heroism or, as Beetle said, discipline. If you consider the culture of classic Japanese action films, the heroes who take down EVIL are usually adept and disciplined in martial arts.
On the Bug side, insects obviously aren't know to be the undoing of evil, but if you consider what people associate with bugs, things become more clear:
- From one angle, we can again refer to Japanese culture. To quote TvTropes.org: "Japan loves bugs, and they're everywhere. Not only is Bug Catching one of the oldest pastimes in the country, but much of their pop culture includes or is influenced by them."
Beetles and bugs are regularly the costume theme designs of fictional heroes or mechs in Japanese series. In Gen II, they introduced Heracross a Bug/FIGHTING hercules beetle, a wildly popular beetle, alongside the Dark type to perfectly counter the new type. This is the "Hero" angle cropping up again.
- The second angle to consider is on the other end of the spectrum of how Evil is vanquished. Bugs are known to swarm or cooperate in numbers that overwhelm the target (think endless mosquitos on a camping trip or a synchronized colony of ants). Similarly, if one wants to overthrow a great evil, an army or a cooperative society can collaborate to take it down with sheer numbers. Evil may strike one or a handful down, but the movement will overwhelm eventually.
So ultimately, Evil (Dark) is framed as being bested by discipline/heroism (Fighting), the collective effort of the masses (Bug), or pure goodness (Fairy).
Now if only somebody could explain why exactly it is that Ghost type is weak against Dark type...