Ultimately, the project manager is responsible for the survival or failure of a project. If a team member did something that caused a problem (or even project failure), you are still responsible for the project. Stakeholders expect you to manage the team, the risks, the scope, the schedule, everything.
Based on this, I would say that naming names (especially for blame) is useless. If anything, it'll look like you're trying to pass on the blame to someone else.
Therefore, I would say name team-member names to those outside the team to give them credit. This shows that you support your team and are happy to give credit where it's deserved.
And also, name names (if absolutely necessary) within the team. Ideally, the person you're blaming is in the room when you're telling whoever else it is who needs to know what they did.
Again, the person is not important who made the mistake, because everybody makes mistakes; what's important is to move forward as a team, regardless of who slipped up.