I feel like marring the reputation of a person in response to wrongdoing has a very important basic purpose for warning other people about interacting with the wrongdoer, i.e. Sarah Smith is dishonest, so don't trust things she says to be true. This is valuable in worlds where everyone is already a fixed truth-teller/liar and everybody has fixed values.
Counting the positive utilitarian outcomes and no other outcomes seems like a fairly useless thing to do. Dropping an atomic bomb on Sarah's home city has positive utilitarian outcomes (as well as additional negative ones which you're not counting, since you're only interested in the positive ones).
I like your cynical model and would emphasize it more. I.e.:
Step 0, the listener has a preexisting opinion of Sarah. Step 1, the listener hears that Sarah did Thing X. Step 2: If the listener had already liked Sarah, then they’ll rationalize why Thing X was actually fine under the circumstances; or if the listener had already disliked Sarah, then they’ll rationalize why Thing X sucks and Sarah definitely sucks. (Or if the listener was neutral about Sarah, they'll probably pick a side based on other vibes, e.g. how they feel about you the speaker.)
I think it’s worth thinking about conversational implicatures here. In general, in everyday speech, people talk about other people much more often than people talk about norms and ideas (present company excluded). So in everyday speech, if Alice say “Sarah did Thing X which is bad”, then it’s usually a correct assumption that the main takeaway / upshot / purpose of this speech act is that Alice is trying to communicate the message “we should all think less of Sarah”. And then the listeners will think to themselves: “Do I basically agree or basically disagree with this main message that Alice is trying to communicate?” And if they basically disagree with that main message, then the detail “Thing X is bad” will get ignored at best and sign-flipped at worst.
An obvious direct effect is whether Sarah speaks up in her defense. If you say "Somebody did XYZ, which are bad", then for Sarah to say "Well, actually, X didn't happen, Y is an exaggeration, and Z had mitigating circumstances, plus the accuser is hypersensitive and prone to misinterpreting things" would identify her as the alleged villain, and therefore probably lower her reputation even among people who mostly believed her. On the other hand, if you say "Sarah did XYZ", then that makes it very likely that Sarah will say things in her defense, since she has everything to gain and nothing to lose (unless her defense manages to make her sound worse, which probably occasionally happens).
So, if it's possible for Sarah to severely undermine your claims, then giving her name basically guarantees she'll do it, while hiding her name (and any identifying details) gives her a good reason not to. So if you want the point "XYZ are bad" to stand, then keeping Sarah out of it could be tactically useful. (Though, on the audience side, if I see a post that says "Hey, everyone, XYZ happened and they're bad", and then I hear that there's someone who could have severely undermined the author's claims, I wonder "Hmm, is this actually a credible report? I'd like to know, because I don't want to make policy decisions based on exaggerations and falsehoods—that leads to moral panics.")
Now, I guess you can separate the claims "XYZ are bad" and "Sarah did XYZ". Potentially even Sarah could respond to a unified post by saying "Yes, XYZ would be bad if I did them. However, I did not." In terms of pure logic, there's no reason one should interfere with the other. In terms of "discussion on the post getting dominated by he-said she-said rather than by weighing principles and deciding what the rules should be", one can certainly distract from the other.
But then, another aspect is that someone who wants to hurt Sarah for other reasons could be motivated to say "Sarah did XYZ, which are bad". And as part of this, they could be motivated to exaggerate the badness of XYZ even when they're claiming to discuss the abstract general case—"X is especially harmful to people who ...". People reading your post may bear this in mind. And Sarah, in conducting her defense, is motivated to downplay the badness of XYZ—"You haven't mentioned the obvious coping strategies that are likely to be employed, and the research that claims X is so harmful is flawed in several ways ...". The same motivations might be extended to other people who are on "your side" or "Sarah's side".
Whereas if Sarah's name is kept out of it, then that reduces these motivations, and therefore (probably) the degree to which they, and suspicion of the motivations, taint the abstract discussion. (On the one hand, Sarah might anticipate that her name might leak eventually [perhaps specifically to a subset of the audience who knew some private details] and still be motivated to exaggerate her arguments about the abstract case. On the other hand, for Sarah to do so risks leaking her identity—"Hey, why do you care so much about defending this unnamed villain?". Such leaking risk is likely less for Sarah's defenders, if any.)
All the above is heavily affected by the details of the situation. Is the harm, and its extent, obvious and objectively verifiable? (If so, why doesn't everyone already know XYZ are bad? Perhaps it's obvious once you see the evidence and most people are just ignorant.) Is the accuser robustly credible, or will Sarah be able to dig up and show a history of the accuser being hypersensitive, misinterpreting things, and/or lying? Is Sarah very good at arguing? Is there other bad blood between the accuser and Sarah? Does the intended audience have a lot of people who are highly motivated to take Sarah's side or the accuser's side?
The above all feed into the final question: what would a rational audience member deduce about the decision to not name the culprit? Various reasons are possible, and the details/context determine which are plausible. It may help to state the reason in the post (of course, it will likely attract some people arguing against it).
It seems like on a basic strategical level (ignoring the politeness of trying to change others’ values) you would much prefer have 2 than 1, because it is longer lasting, and doesn’t involve you threatening conflict with other people for the duration.
There's surface actions and then there's background convictions. I think public shaming only works for the surface actions. For example, you don't want racists to use racist insults, so when you see someone doing it, you're very motivated to shoot it on your phone and post publicly. I think it's plausible that such shaming deters racists from acting out in public. But I don't think it moves the needle on their background racist convictions.
What works for background convictions is storytelling: fiction, movies, real-life stories about someone. We are primed to elicit hints on how-important-people-think from all this and to adjust our worldview to conform.
Suppose someone wrongs you and you want to emphatically mar their reputation, but only insofar as doing so is conducive to the best utilitarian outcomes. I was thinking about this one time and it occurred to me that there are at least two fairly different routes to positive utilitarian outcomes from publicly shaming people for apparent wrongdoings*:
A) People fear such shaming and avoid activities that may bring it about (possibly including the original perpetrator)
B) People internalize your values and actually agree more that the sin is bad, and then do it less
These things are fairly different, and don’t necessarily come together. I can think of shaming efforts that seem to inspire substantial fear of social retribution in many people (A) while often reducing sympathy for the object-level moral claims (B).
It seems like on a basic strategical level (ignoring the politeness of trying to change others’ values) you would much prefer have 2 than 1, because it is longer lasting, and doesn’t involve you threatening conflict with other people for the duration.
It seems to me that whether you name the person in your shaming makes a big difference to which of these you hit. If I say “Sarah Smith did [—]”, then Sarah is perhaps punished, and people in general fear being punished like Sarah (A). If I say “Today somebody did [—]”, then Sarah can’t get any social punishment, so nobody need fear that much (except for private shame), but you still get B—people having the sense that people think [—] is bad, and thus also having the sense that it is bad. Clearly not naming Sarah makes it harder for A) to happen, but I also have the sense—much less clearly—that by naming Sarah you actually get less of B).
This might be too weak a sense to warrant speculation, but in case not—why would this be? Is it because you are allowed to choose without being threatened, and with your freedom, you want to choose the socially sanctioned one? Whereas if someone is named you might be resentful and defensive, which is antithetical with going along with the norm that has been bid for? Is it that if you say Sarah did the thing, you have set up two concrete sides, you and Sarah, and observers might be inclined to join Sarah’s side instead of yours? (Or might already be on Sarah’s side in all manner of you-Sarah distinctions?)
Is it even true that not naming gets you more of B?
—
*NB: I haven’t decided if it’s almost ever appropriate to try to cause other people to feel shame, but it remains true that under certain circumstances fantasizing about it is an apparently natural response.