my suspect was wrong alarm.
on your question: sound reasonable. if i have such problem, i will see some trash somewhere, which i didn't. may be animations finish one frame after last one, or may be transition visible->hidden is after animation finish, i am not sure. what i see is that CGUIControl::UpdateStates is setting visible=HIDDEN only when animation currentState == ANIM_STATE_APPLIED, which seems to be second version. till then control is visible.