The Expander control does not appear to resize itself when the size of it's contents are changed. Perhaps it works in other scenarios but in the scenario demonstrated in the steps it does not.
Expander should always fit the size of the contents within. Much the same as the Auto property on a Grid row.
Expander does not appear to resize but seems to fit the largest case scenario. I have not tested extensively many scenarios but in the sample app this can be observed using the method above.

https://github.com/varyamereon/ExpanderGridTest
Haven't found a workaround but would be interested.
Hi, @varyamereon your scenario describes the purpose of adding ForceUpdateSizeCommand property to Expander control. So, you should use it.
On your sample it will look like:
public ICommand? ForceUpdateSizeCommand { get; set; } // define the command
public Contact? CurrentContact
{
get => currentContact;
set
{
SetProperty(ref currentContact, value);
ForceUpdateSizeCommand?.Execute(null); // call the command
}
}
Add binding in xaml (This binding work in OneWayToSource mode)
<Expander BackgroundColor="LightCoral"
ForceUpdateSizeCommand="{Binding ForceUpdateSizeCommand}"
IsExpanded="True">
@jsuarezruiz @samhouts that's not a bug
Thanks @AndreiMisiukevich, that does indeed work and seems to be the way this control is designed. I find it unusual that a container control needs such a convoluted method to resize to it's contents, most other controls such as Grid, StackLayout etc. etc. just resize automatically.
As I mentioned ForceUpdateSizeCommand should be used in such cases.
Most helpful comment
Hi, @varyamereon your scenario describes the purpose of adding ForceUpdateSizeCommand property to Expander control. So, you should use it.
On your sample it will look like:
Add binding in xaml (This binding work in OneWayToSource mode)