When swimming underwater against the floor collisions seem to be handled with triangle average height (average from the 3 vertices heights). This results in the character moving like in stairs when going from a triangle (or set of triangles) to another.
Maybe this is already planned or maybe it would be too much for the engine but my guess is it should be smoothed based on the exact character location. When standing on a triangle the center of origin should collide with the triangle. If the collision point is an average of the vertices heights the character is always at the same height at any location on that same triangle.
Also if the character is inclined with a high enough angle when hitting a triangle he's not moving at all anymore. We can also clearly see that it is not smoothed as if that angle varies from 1 or 2 degrees he starts moving again. That results in some "flickering movement" in some situations (when touching two rocks for example).