All custom field groups and field names have to be unique. Especially with ability to share common custom field values now in 2.0, it would make more sense to enforce field names to be unique only within their field groups. So, field groups would have to be unique, but field names would be like local variables within the groups.
This will benefit the user experience as well, since it would allow fields which draw from the same data list to be have a consistent name wherever they appear. Current you have to append distinguishing qualifiers to each instance.
Going one step further it would also be nice if field groups had to be unique only as [field group - applies to] pairs (i.e. you could have two copies of the same field group name if one applied to contacts and one applied to memberships).
I expect this is an architectural limitation so not a simple change, but wanted to put it out.