Why use Node for composition rather than Resource or RefCounted?

There is nothing wrong with either of these approaches. I wouldn’t use RefCounted though, because these can’t be serialized in the Inspector like Resource or Node. Node additionally have the benefit of being able to be added to the scene tree so you have an overview of all components without having to check in the Inspector what is or isn’t part of the object.

See here a bit more discussion about Resource vs Node based state machine, which could be applicable to components in general.