Visual novels usually have branching paths. When a given scene has to be shown on two different paths through the story, there are three ways for a visual novel to do it. It can even do all three at the same time.
1) The logic and text are both duplicated between branches. This can even change individual lines by a single character if they reworded something for coherency within the branch, or if they fixed a typo in it.
2) The logic is duplicated, but the text is shared through some kind of table. This is very common even for deduplicating lines that aren't part of the same scene.
3) The logic and text are shared by merging the branches temporarily, even if it's only for a few lines. The simple version of this is having a whole scene as an independent file and jumping in and out of it in the middle of different routes.
The way I dump scripts tries to only use text that's printed as dialogue or narration with the logic, which means it has to go through every possibility, even if that possibility is impossible. For example, BGI games are capable of having unreachable logic that outputs text. My BGI dumping tools pick up on that text. However, most BGI games have a shared text table for each scene at the end of the scene's file, and some BGI games apply basic deduplication to the text table.
My BGI dumping tool doesn't dump the same line from the text table twice. This means that even if two games are otherwise completely identical, they might be dumped with or without the duplication of certain branches within a scene.
This is only an explanation of a particular place where this happens. Visual novels can do basically anything as long as they have a way to reference the text they want to display.