The easiest way I've been able to achieve this is with styles (you can keep everything in XAML and you don't need any special MVVM properties). You can set a top-level ItemContainerStyle on the actual TreeView element to style the root TreeViewItem and show it as expanded. Then set an ItemContainerStyle on your HierarchicalDataTemplate element as your default TreeViewItem style for all of the nodes on other levels. The BasedOn attribute will make it easy to inherit the entire TreeViewItem style and only change the IsExpanded property.
The main TreeView XAML:
<TreeView x:Name="Tree" ItemContainerStyle="{StaticResource RootTreeViewItemStyle}">
<TreeView.ItemTemplate>
<common:HierarchicalDataTemplate ItemContainerStyle="{StaticResource TreeViewItemStyle}">
<!-- rest of your template... -->
</common:HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
Your base TreeViewItem style:
<Style x:Key="TreeViewItemStyle" TargetType="TreeViewItem">
<!-- your normal or default TreeViewStyle... -->
</Style>
The root TreeViewItem style:
<Style x:Key="RootTreeViewItemStyle" TargetType="TreeViewItem" BasedOn="{StaticResource TreeViewItemStyle}">
<Setter Property="IsExpanded" Value="True"/>
</Style>