The way I solved this in the end was to use the Draper gem and write admin decorators for activeadmin.
It worked well enough until I hit issues with nesting.
As activeadmin forms don't use the decorators in the buttons like create and edit.
I ended up just using a flat structure with no nesting which meant the Draper decorators worked fine.