AddChild adds displayObjects to the parent.
Not all Spark components are DisplayObjects. Some are GraphicElements. AddElement can add both DisplayObjects and GraphicElements to a parent Group.
Also, addChild calls removeChild. So be really careful about calling addChild where the child you're adding was already the child of something else, because if you call removeChild on an IVisualElementContainer (even indirectly, by calling addChild somewhere else), IVisualElementContainer will helpfully throw an error for you.