I usually happily ignore "duplicate data" warnings. If a control can be hidden without being in a section, I will hide it. If I have a group of controls or fields I need to hide, I usually take that as an indication that my schema should also have a group - like, if I need to hide Name / Address / City etc unless a checkbox is selected, I'd have a group in my schema called "Contact" with the various fields in it, and my section would be bound to Contact.
If I need to just hide a control that can't be hidden via formatting, but only disabled, I'll bind the section to the same group as the field.
If I have some stuff completely unrelated to my main data source that I want to have in a section, I'll use a secondary XML file (as a resource in the form) and I will bind sections to groups in that file - say for a "help" section or something.
The one thing I just won't do is your last bullet - I like my schema to represent my data, and feel like a bunch of empty groups is at odds with that goal.
Wonderful post, by the way, I hope others will also join in!