The example you gave with Oshawott and vines seems like an excessively strict take on the type chart to me.
(Although, it does sound like it could make for an interesting story. If you think about weaknesses like allergies, then having an Oshawott with an excessive grass weakness/allergy could lead to the situation you described and would probably make for a very difficult life for it.)
Thusfar, the type chart's never come up in my writing. I don't remember much of how things went down in my old chaptered fic, but I wouldn't count that as something really worth remembering anyways. My three one-shots combined contain only one pokemon battle, and that battle doesn't have any reason to involve the type chart. However, I think I would end up taking a more realistic approach to the type chart interactions, since I like trying to give Pokemon a more realistic spin.
The way I see Pokemon, the games as we know them could exist within the Pokemon universe as well. They are no more accurate to "real life" battles than any of our other video games reflect real battles (I'm thinking about Fire Emblem's weapon strengths/weaknesses here in particular). Some of the type combinations obviously work out (water is great again fire, fire is great against grass, normal attacks are ineffective against rock and steel), so those were obviously carried over into the games. However, some of other type combinations had to be generalized in order for them (speaking about developers of a pokemon game that lived in the Pokemon universe) to create a working, balanced game.
For example, it's easy to see how flying pokemon could dominate bug types. Birds do tend to win out over bugs. Thus, flying > bug in games. In "real life" pokemon battles, a move like wing attack wouldn't be any more effective against a bug than a tackle, but because wing attack is something usually only seen in flying pokemon, it was assigned a flying type and thus was super effective against bugs.
However, when you get to some of the more unusual parts of the type chart, things get a little harder to justify. Dark types in particular seem challenging in all their type interactions. Why should they be vulnerable to bug and fighting? Or immune to psychic? Speaking of psychic, why is it so vulnerable to bugs? (We've had some very interesting discussions in the authors' cafe about the bug > dark/psychic types before). I try to find ways to explain them, but that doesn't always work out too well, so occasionally I think I would side with more of a "we don't know why these pokemon seem to perform so well against these others, but they do so we put that in the games". Maybe no one in the pokemon world understands why psychic attacks won't touch dark types, or why bugs excel against both psychics and darks, but they see that things often go that way so they just go with it.
If you come up against types like that in your writing, I believe you have 2 options: go full literal and disregard those combinations entirely, or assume that "it just works" and poke-science can't understand it yet.
However, I think I always try to stick to the most literal interpretations I can. Thus the type chart is more of a general guide and works more on a move-by-move basis than as a overarching law. (Vine whip probably wouldn't work very well against Blastoise due to it's hard shell, but mega drain could still be extremely effective.) This also leads to ignoring some immunities (I don't care if it's a flying type, if it's on the ground an earthquake is going to affect it, and ground types might not always be immune to electricity) and taking other things into consideration (I don't care if fighting > rock, if you're not crazy strong your punching isn't going to do much to a piece of steel or a rock).
TL;DR: I favor literal interpretations of the type chart as much as possible, but try to keep the type chart in mind and find ways to explain why it works the way it does, even when that gets difficult (again, dark types are a perfect example for this).