Line-level diffs didn't even make sense when humans wrote every line. It's just combining two different things—text-based files and formal languages—in ways that were never going to make sense. We've all wasted days of our lives fixing crappy diffs because nobody bothered to develop something that made sense for the files we were tracking outside of "everything is text who cares text is magic"
Still, some languages/heuristics handle this better than others.