Flex3でも例えばAS3のビジュアルパーツをApplicationを含めた「コンテナ」に子として追加する場合、UIComponentにくるまないといけないという制約があったよね。
これはFlexビジュアルコンポーネントとして最低限のメソッドやプロパティを含めるための措置。

例えばある自作の画像クラスを追加する場合、

var flexComp:UIComponent = new UIComponent();
var imgIns:ImgClass = new ImgClass(); // 画像クラス

flexComp.addChild(imgIns);
addChild(flexComp);

としなければならない。

Flex4でも当然こういった制約がある。
MXコンポーネントは同じようなものだけど、s:Applicationを含めたSparkコンポーネント(コンテナ)に関しては内部的にちょっと変化している。
それは、

SparkコンテナはIVisualElementインターフェースを実装したコンテンツのみ含めることが出来る。

というもの。
UIComponentはこれを実装しているので自作AS3パーツなどは上記Flex3の例と同様の措置でおk。
(最後のaddChild()をaddElement()にする必要有り)

これはaddElement()の引数の型でも分かる。
http://help.adobe.com/ja_JP/AS3LCR/Flex_4.0/spark/components/SkinnableContainer.html#addElement%28%29
※インターフェースはスーパークラス扱いになる。

IVisualElementを実装しているクラスは他にもある。
GraphicElement
SpriteVisualElement
UIMovieClip

例えばベクター描画を行うRect,EllipseやBitmapImageなどはGraphicElementを拡張しているのでSparkコンテナに追加できる。
でも気をつけないといけないのは、Flex4SDK環境上でこれらをMXコンテナに入れたいとき。
UIComponentを拡張していないので入れることが出来ない。
そのときはGroupの子にして追加してやればおk。

Flash Builder 4 and Flex 4 Bible/David Gassner

¥4,929
Amazon.co.jp