I find myself having to make custom animations when I trigger visibility changes since there is no way to do so automatically. I expected LayoutChange and LayoutAnimation to handle that case, but no luck. I would suggest that elements would respond to something like:
<Panel>
<VisibilityAnimation Invert="false">
<Change Target="myTarget.Offset" Value="0,-50" Duration="0.5" DurationBack="0" Easing="CubicOut" />
</VisibilityAnimation>
</Panel>
This animation would toggle on and off as if it were inside a WhileTrue block, therefore running Duration/Easing on Visibility="Visible" and DurationBack/EasingBack on Visibility="Hidden" or Visibility="Collapsed". The Invert parameter would start the animation during Hidden or Collapsed and resume it on Visible instead.