Your inner loop assigns in the same location over and over
dTabs = OrderedDict()
for iFolder, folder in enumerate(mtd.GroupedTables):
if folder.Count > 0:
dTabs[folder.Name] = OrderedDict()
for item in folder:
table = item.Table
dTabs[folder.Name] = table.Name # same location is being updated
print dTabs
you need a list like data structure to hold each "table.Name"
dTabs = OrderedDict()
for iFolder, folder in enumerate(mtd.GroupedTables):
if folder.Count > 0:
dTabs[folder.Name] = []
for item in folder:
table = item.Table
dTabs[folder.Name].append(table.Name)
print dTabs