Software development is a creative process, and not just pecking away at a keyboard.
It is often also very collaborative. Allowing for personal discussion is a good thing because it establishes relationships, breaks the monotony, often causes moments of inspiration, and reduces conflict.
If you have a friendly relationship at work you are more likely to say "Hey, why did you code this procedure this way?" as opposed to complaining to management.
I have first hand experience with this. Often times the socializing wanders into work related issues, and sometimes the work related issues SEEM like socializing. We had a manager from a different department complaining about us all the time. Same manager came back asking why we had such good communication on our team.
The benefits, IMO outweigh any perceived loss of productivity, because it's more than made up for with higher morale and greater collaboration. If deadlines are being met and the work is getting done, it is a benefit.
That said, if it gets to the point that work is NOT getting done, then a gentle, "folks, we need to knuckle down" is warranted, but never make it hostile.