Hmm Yeah I have come up with varius solutions for this.. one way you coud go ..
You could have the script duplicate the face and seperate it.. then center the pivot on the object and then you could use a parent constraint with maintain offset turned off to snap the object to that face.. then delete the extraneous face.
My first thought was use xform to get the worldspace space of the face but it returns the coords of all the vertices that make up the face.. I suppose it wouldn't be too hard to do soem math to get the center of the face from that and then move the object to the point in space.
Another method I have used is to select two edges , duplicate edges to curves, then make a nurbs loft between the two curves, then make a curve on surface, then attach the object to the path.. but it's alot of stuff to do and is slow if you have alot of these happening and coudl probably be solved with fewer steps and a geometry constraint etc nowadays.