Paste this in Macro window, select all glyphs and run it:
for thisLayer in Font.selectedLayers:
currentGlyph = thisLayer.parent
print "Processing:", currentGlyph
namesOfSpecialLayers = [l.name for l in currentGlyph.layers if l.isSpecialLayer]
for component in thisLayer.components:
originalGlyph = Font.glyphs[component.componentName]
if originalGlyph:
for originalLayer in originalGlyph.layers:
layerAlreadyExists = originalLayer.name in namesOfSpecialLayers
if originalLayer.isSpecialLayer and not layerAlreadyExists:
newLayer = GSLayer()
newLayer.name = originalLayer.name
currentGlyph.layers.append(newLayer)
newLayer.reinterpolate()
Update: componentName instead of baseGlyph