My usual way of doing that is
1. Make a boolean report parameter named "HideDetail". Depending on the user requirements, for some reports I make this a hidden parameter; otherwise I give it a parameter prompt like "Collapse Groups" or "Show Summary".
2. For each table group except the top level, set the Initial Visibility property to =Parameters!HideDetail.Value
3. For the toggle cell of each group, set its InitialToggleState property to =Not Parameters!HideDetail.Value . That sets the plus and minus toggle icons properly when the report is generated.