How can an animated object kept on the surface of an ocean?
As gandalf3 suggested a Shrinkwrap constrained works, but not alone. Using Vertex Parent on a triangle and shrinkwrap the triangle to the ocean does the trick.





For the second requirement to follow a curve a Curve modifier must be added before the Shrinkwrap in the modifier stack.



The vertex parent trick was described here but this tutorial uses softbodies and is more complicated to setup.