Because, the developers made this. Look at the documentation
expandItem () method
public function expandItem(item:Object, open:Boolean,
animate:Boolean = false, dispatchEvent:Boolean = false, cause:Event
Opens or closes a branch item. When a branch item opens, it
restores the open and closed states of its child branches if they
were already opened. If you set dataProvider and then immediately
call expandItem() you may not see the correct behavior. You should
either wait for the component to validate or call validateNow().
item:Object — Item to affect.
open:Boolean — Specify true to open, false to close.
animate:Boolean (default = false) — Specify true to
animate the transition. (Note: If a branch has over 20 children, it
does not animate the first time it opens, for performance reasons.)
dispatchEvent:Boolean (default = false) — Controls
whether the tree fires an open event after the open animation is
cause:Event (default = null) — The event, if any, that
initiated the item open action.