Idea (untested and off head):
You may be able to move it by manipulating the tagged values on the behavior directly.
from plone.app.dexterity.behaviors.metadata import IDublinCore
from plone.supermodel.interfaces import FIELDSETS_KEY
from plone.supermodel.model import Fieldset
custom_fieldset = Fieldset(
'mycustomset',
label=_(u'My Custom Set'),
fields=['title', 'description']
)
fieldsets = IDublinCore.getTaggedValue(FIELDSETS_KEY)
# TODO: if title and description are in a fieldset you may need to remove them there.
fieldsets.append(custom_fieldset)
# here I'am not sure if this is needed:
IDublinCore.setTaggedValue(FIELDSETS_KEY, current)
Please tell me if this works.