i think that there is room for sexp executed movement scripts. especilly for cap ships (such as the sathanas). you would also have built in events for stuff that is used frequently if its on a by position basis you can place a movement list in the ship table entry. it would look something like this.
$position: 1 ;name of position (referenced by built in movements and sexps)
+sobj: wing01 ;name of subobject
+translate: 1 -10 0.5 ;movement (relative to original position)
+rotate: 15 30 45 ;rotation (relative to original)
+sobj: wing02 ;you can specify entries for multiple subobjects
+translate: 1 -10 0.5
+rotate: 15 30 45
for model reoreintation to work correctly the modeler must make certain that subobject's center is where the subobject should pivot. if the subobject is child to a moving parent then that subobject's original origin and orentation should always be relative to the parent. absolute movements should be avoided.
Built in movements should be worked to perfection, and should not allow for any errors. sexp triggered movements should not be allowed to co-exist with built in movements unless they do not reference the same subobjects, this could invite error (if a sexp opens a docking bay door, then a built-in movement should not be allowed to open the door, although docking bay dors would be better off if they were triggerd by built in events). there should also be a sexp that restors a model's original positions.
for gunpoints to traslate with objects you should be able to specify which gunpoints will translate with which subobject. the $transpoints tag specifies which points are linked to which object. it's format would reference subobject and a series of numbers that specify particular gunpoints. (0 for gun, 1 for missile), bank number (0-3), and point number 0-whatever number of firing points there are in the mentioned bank. it would look like:
$transpoints: leftwing, 1,2,3 ;gunpoing 3 in the second missile bank will translate with a subobject called leftwing.
a -1 means all points in that section will move so this:
$transpoint: rightwing, 0,-1,-1
will translate all gunpoints with the rightwing.
several would bee needed if wou had several moving gunpoints.