I thought Garlick was a little younger. Mind you, I think WYSIWYG with Williams too. But he's young enough that he might have another peak left in him. And Garlick may or may not be a late bloomer who just never got enough major league ABs to show something. Neither of those things are true of Herrera.
The Phillies gave up on Dom Brown when he was 27. He had a .710 career OPS and 95 OPS+. They gave up on Franco at 26 with a .733 OPS and 93 OPS+. Herrera is better than both of them, but not that by that much (.756, 102), and he's been worse every year of his career. Plus for whatever reason his defense disappeared.
It wasn't just a bad start in 2019, his 2019 was exactly like his second half of 2018 (on the bright side, his first two months of 2018 were MVP-level, so yeah, you wonder if that guy is still in there somewhere. But that was two years ago now, including a full year without seeing a live pitch).
Paradoxically, the only reason he's actually still in the organization is his salary and his arrest. Without either of those things he would have been non-tendered like Franco or optioned to AAA or released (but the DFA, while seeming punitive, was also smart roster management).
It's actually an easy call for the Phillies right now. He's not going to beat out Haseley or Quinn (as a CF) or Jay Bruce (as a LH bat). The truncated camp with just three real exhibition games won't let anyone really show anything that they haven't already. And he's not going to take away a 40-man roster spot from Williams (you could argue Herrera is better simply because he probably wouldn't be a negative in LF, but Williams isn't actually going to make the major league roster either, and could still lose his spot to someone who plays a position of greater need).
So it really doesn't matter if he's the 41st, 54th or 61st player on the roster. Should they desperately need him he's available. Cynically, they could withstand the PR hit of having him in camp because there's no fans or media and he'd still be in the equivalent of minor league camp.
But if they put him in the pool and then have to remove him from it (because they have to add someone they want to trade, or someone like Moniak just to get him some work) then they are stuck with his contract and luxury tax hit for the next two seasons, taking away that already admittedly small chance of getting some salary relief (or token trade return) for him.
Keeping him stashed in Miami is probably still the smart asset management move; break glass in case of emergency, whether it's the Phillies or another team's.