This distinction is why I have really appreciated the Agile trend, and most particularly the idea of making not per "specialty", but per project!
When a bug/defect is uncovered, the project is threatened. Whether the bug comes from a bad design, a technical issue, a bad implementation of the specifications or whatever is irrelevant to the customer: it does not work as she want it to!
Therefore, a bug in a project is by definition the responsability of the people working on this project (all of them)... and those who provided guidance (customers included). Finger pointing hurts more than it helps, since many time the issue lies in communication / ambiguity more than anything.
That said, there are coding errors, that are the developers' own. Don't shy from them, instead you should heartfully congratulate whoever found them (and apologize...)
We learn from our mistakes. Sometimes requirements and specifications are so loose that only by experimenting will the project move forward. Sometimes there are corner cases in the language / with the technology, and by hitting them you'll discover them, and learn to do better. Sometimes the customer asked for something and only by providing it will you realize that even though it solves the problem they described, the true issue lies elsewhere...
Bugs and Defects are an occasion to learn, and to polish the product you're building to an even higher degree of quality. Who cares about blaming ? Just think about what can be done to make the product better.