The last lot of shop-fabbed boards I panelized were too large for my free Eagle, so I imported the design to DesignSpark which has simple panelization built in. I’ve done smaller boards using the panelize.ulp in Eagle, it was a bit messy though.
Using my own software on my Modela MDX-20 mill I take the Eagle mill/drill/route CAM output and allow for simple panelization as an array (number in x, number in y, x offset, y offset) with visual display, and just add the origin offsets to the output in a loop, pretty simple to do.
However looking around I’ve just found what looks to be a highly regarded and flexible open source Gerber panelization suite http://blog.thisisnotrocketscience.nl/projects/pcb-panelizer/
Source is on Github here: https://github.com/ThisIsNotRocketScience/GerberTools
I plan to give it a try when the need next arises.