I don't know whether this belongs here (where most of the questions appear to be about hardware) or on Math or on Blender (though I've never used Blender).

All of the designs that I've published so far consist of grids of bent ‘rods’, and in most of them the spacing of vertices depends on the rod's local curvature; that's easy enough. But I think some of these figures would look better as continuous surfaces, and it's not obvious to me how to arrange the vertices efficiently — that is, to triangulate the surface just finely enough that it's accurate to within the printer's resolution.

So: given a surface defined by well-behaved functions x(u,v), y(u,v), z(u,v), is there a standard way to choose vertices in u,v space so that the length of each edge is roughly proportional to the radius of curvature in its direction?

For 3d printing this is not very relevant. The triangles only exist in the File read by the slicer. And there are file-formats that can describe rods without the need to use triangles.

If you create a model in a format that uses triangles than just use enough of them to get your model described fully. (millions of very small triangles) That is probably a waste on part where it has less details, but that just makes the file a bit bigger.

The problem of best print quality doesn't end there.

The slicer looks at the triangfles and creates a 2d image of the intersection of the triangles with the layer hight. It then creates g_COde paths along the lines in this 2d image for every Layer. Using triangles to describe the model will only give small line segments for these 2d slices. Therefore the G-Code creates will only have straight line movements (G0, G1).

With a format that can describe curves, the slicer could end up with circles and arcs on the 2d slice and could then use G2 and G3 moves. And if the Firmware of your printer understands these commands you would get the best possible quality with rather small model files.