The main issue with that approach is that of trolltagging – i.e. tagging as a swing something which cannot be used by any child as a swing.

In other words, it requires data consumers to support capacity:baby=* (and any number of other existing or future capacity:*=* tags) in order to not completely misinterpret the playground=swing, which is problematic (for hopefully obvious reasons).

Using separate nodes for playground=swing (i.e. baby=no) and playground=baby_swing (as suggested in my post above), makes it easy for data consumers – e.g. in OsmAnd, if you are e.g. teenager you’d look for playground=swing and if you’re parent carrying a baby you’d look for playground=baby_swing.