I just don't understand cases when, for e.g., somebody asks a very specific question, and a user, rather than giving them an answer, will instead link them to a similar question.
There are two cases where this happens:
When the user thinks that they've asked a question that is an exact duplicate of another question, and therefore votes to close the question as a duplicate. When they do so, the system automatically generates a "possible duplicate of…" comment.
When the user doesn't necessarily have the time or expertise to answer the question being asked, but they remember seeing a question that may be related and is possibly useful, so they leave a comment containing a link to it. These generally take the form of "Related: <link>" or "Possibly related: <link>" or "Also see: <link>". These people are not suggesting that your question is a duplicate, they're just sharing the information that they do know, hoping it might be helpful in some possible way—maybe as background information, maybe giving you enough information to solve the problem yourself, whatever. You're free to ignore these comments altogether if you don't find their references useful. But someone might, so we leave them.
But what about the cases where questions are only slightly similar?
"Slightly" similar is not a good description. I don't even know what that means.
Questions either cover exactly the same ground as another question and therefore have the same answer, or they don't. In the former case, they are duplicates. In the latter case, they are not.
Where a user has already Google'd the answer but could not find it. They then ask the question themselves but receive a negative response as the question does in fact already exist in some form, and they often risk having their fresh question closed.
There is nothing wrong with this! In fact, that's how it is supposed to work. Having a question closed as a duplicate (unlike some of the other types of closures) is not a "negative" thing. I actually think it's a positive thing: you get (a) good answer(s) immediately without having to wait, and they've already been thoroughly vetted by the community.
There should not be an implicit "#&%! you, you should have searched better, n00b" attached to duplicate closures. If such comments are left, they should be flagged and obliterated.
I mean, sure, sometimes there are very obvious cases where 2–3 minutes of searching would have turned up a duplicate. But in my experience, these are the exception rather than the norm. And either way, these should not be the only questions we close as duplicates. In fact, I think you could make a compelling argument for closing these questions as duplicates at all. Rather, they should be closed using some new-fangled variant of the old "not a real question" reason.
Why are we aiming for single, unique questions rather than a large collection of similar/duplicate questions which in turn may provide better coverage to people using Google?
Well, we are. Both of those.
What? Allow me to explain…
Our goal is to avoid the needless duplication of answers and effort. Think about it this way: if I want to know about something and go searching for it, I shouldn't have to read a bazillion different questions and think up a truckload of different search terms just to find all of the related questions. I should just be able to go to one or two related questions, read the answers, and find exactly what I'm looking for.
Even if you disagree that duplication is inherently wrong (and how could you? we programmers almost always have a touch of OCD, and rightfully so.), you have to admit that there's nothing positive about having valuable information scattered all over the place. It's too hard to update with new information, it's too hard to find in the first place, and it's too unlikely to be subject to the kind of community review that makes Stack Exchange sites so great a resource.
And there's just no point. Well, except the one you mention: "better coverage to people using Google". But of course, that's already adeptly handled by the existing duplicate closure system.
We don't delete duplicates (or at least, we shouldn't in the general case). Instead, we leave them as "stubs" pointing to the original "master" question. That way, when people search using the permutations of terms in one version of the question, they'll still find something, and then are immediately directed to the answers they're looking for.
It's like in a dictionary when you look up one form of a word and are redirected to the stem or root form.
And don't worry: we've already solved the pathological case of recursion: see recursion. Questions can't be closed as duplicates of themselves, and the system won't let you create circular dependencies.