In an online debate about the "gay marriage" issue a while back, I heard a woman say that one of her concerns (in light of an assumption that the day of gay marriage was pretty much inevitably on its way) was how she would explain to a school-aged child why exactly she couldn't go visit a friend who had "two mommies" or "two daddies". This was immediately jumped on as being an incredibly homophobic idea. Why not, many asked, use this as a teaching moment? "Little Jenny has two mothers who love each other very much. However, we as Catholics believe that only a man and a woman can get married."
Now, the "teach the controversy" idea is a very popular one in the modern US. We like to think of ourselves as being open-minded and fair -- and also when you're talking to your opponents it's a good code for saying, "Sure you disagree with you, but do you mind teaching people my views anyway?"
However, as the parent (and looking back on having been a child) I think that the sheltering approach is probably the way to go.
Little though the idea may appeal to us at times, there are a lot of things that a mind not yet fully formed is simply not yet ready to deal with. One of these, I think, is "Sometimes people who seem nice or good in many ways do things which we consider gravely sinful -- even though it may not look very bad at first glance."
Actually, to be honest, it's an idea that even many minds which by rights should be fully formed do not seem to be able to deal with. All too often we hear in reference to some hot button personal morality issue, "The people I know who do X all seem like well adjusted and loving people, so how morally destructive can it really be?"
Instinctually, we seem to want to sort people out into "good guys" and "bad guys". As we get older, we hopefully get better at understanding that otherwise good people sometimes do bad things and seem to be pretty happy to go on doing them. We learn to see that people have strengths and weaknesses and can't be conveniently classified. But this takes a lot of time, and I really don't think kids under a certain age are up to doing it.
Perhaps I was just an overly judgemental child, but I remember clearly that one of the difficulties my parents had with me was that when I heard about someone's actions that I had strong moral opinions about, it was hard to keep me from swinging to a rather vocal "that's a bad person" point of view. So when an aunt had several children out of wedlock, or another aunt got married outside the Church, when an uncle walked out on his wife and kids, or when a friend or relative became Protestant, I had a tendency not only to decide that everything about that person was bad, but to volunteer this opinion at all sorts of inopportune times. It's not impossible that I was more of a jerk than most children, but I suspect that this was actually pretty normal.
So you're faced with an awkward situation as a parent in a highly diverse society. You can socialize a child throughout a diverse group of acquaintances, and either go light on the moral teaching, or be clear on moral issues and risk your children constantly coming out with comments and judgements that will be seen as deeply offensive; or you can choose to create an artificially homogeneous social set while your children are young, and hope to put off the "dealing with diversity" issue until your child's moral universe is more fully formed.
Obviously, one has limited choice in these issues. Sometimes they have a way of becoming obvious through friends or relatives in a way that is unavoidable. But to the extent possible, it seems to me that rearing children in a religiously and culturally homogeneous environment up to a certain age makes it easier for them to both deal well with diversity later in life and retail a solid religious and moral grounding. Actively encountering too much diversity too early in life, on the other hand, seems to increase the danger of lapsing into either intolerance or indifference.