While not the flashiest solution in the world, I tend to prefer firing squad, mainly because I'm pretty sure it's the quickest way to train marksdwarves. Although, if you've got a properly constructed firing range, a bronze colossus works much better.
...However, in my current fort I'm considering a little side project to get my "A Team" skilled in hand-to-hand combat, as dwarven commandos should be. I'm guessing it will involve a lot of cage matches.
To get a collosus behind a pre-made fortification, you could flood a room it's in. Then it'll float through the fortification, and you can drain it.
Last time I did it (0.31.16 or 0.18, I think,) I just trapped him in a cage to move him. (Can you still do that?) I typically make open firing ranges where the marksdwarves are separated from the target by a ditch, and a bridge that can act as a wall between the target and the trainees. The advantage to doing it this way is that you can make the range in the same room as your archery training barracks, so the marksdwarves will just kind of hang out until you open the bridge/wall, at which all of them will engage the target without having to position them next to a set of fortifications. The disadvantage to doing it this way, of course, is that targets will sometimes dodge into the ditch (which is filled with implements to deal with such an occurrence,) but with proper positioning, it's not so frequent as to ruin the experience, and a lot of times they'll just keel over and get perforated without throwing themselves off the edge.
Colossi don't seem to dodge, IIRC, and can take a tremendous amount of abuse before dying, so for them you just need to release them onto the range, drop the drawbridge, wait for the dwarves to fire all their ammunition, then close the bridge and wait for the dwarves to go reload. Rinse, repeat.