I've always done it in Eagle, using one of the panelizing tools. These tools copy the silk screen layers to new layers so TE reference designators stay the same (i.e., two parts can't have the same reference designator, say R1, so when you copy and paste the second board, R1 might become R17).
I recently discovered gerbv for viewing Gerbers. I thought it might do panelization, but it does not. The only tools I've seen that can do it are expensive. Search for Viewmate for tools that can do it.
Gerber files are ASCII text with every element having an (x, y) pair. Panelizing just requires copying everything and offsetting each (x, y) pair. Conceptually, it's easy enough. It's hundreds of elements x whatever layers your using, so it would be tedious at best to do it manually.