In general, the rule is: If you set a placeholder in an uncached Snippet, the placeholder needs to be uncached as well if you expect the content of the placeholder to differ, ever.
I understand that that’s the rule, the best practice, and I’ll do my part to make that clear whenever I’m teaching anyone how to work with placeholders.
However - the fact remains that if you break this rule, and do use cached placeholders after an uncached snippet (whether intentionally or unintentionally), you will have no problems at all UNLESS you bring output filters into the equation. Plain unfiltered cached placeholders will work. And when you are developing, and your placeholders are getting values as you expect them to, and everything is humming along smoothly, and then you add an output filter and everything seems to break... it can be rather disconcerting and frustrating.
Sometimes people fall into a "best practice" because there is an immediate disincentive to using the "not-so-good practice". Here that is not necessarily the case - you can easily fall in to a "works just fine" practice that breaks later at an inopportune time, unless you go in to it upfront with the knowledge of how not to shoot yourself in the foot.
For the record, if you have a bunch of placeholders after your snippet, and you need them all to be uncached, I’d say a better practice is to put them all in a chunk and just call that chunk uncached. Or better yet have the snippet return the chunk (then you don’t need to worry about cached/uncached at all).