I'm of the school of thought that they should learn it gradually through age-appropriate conversations, so there is no big and icky shock ever. I answer every question DD6 asks, but don't go any further than she seems to want to know. Since she's an inquisitive child, we've gotten pretty far.

At any rate, there is no reason to believe that knowing this stuff early is harmful. Bear in mind that kids used to learn about the facts of life by seeing the animals out in the barnyard.