When I parent something or use child-of to a vertex group with just one vertex, it’s a bit unstable, it wobbles a lot more than it should. To fix this, I instead parented to three vertices. Now, the animation is a lot more stable, but now there’s one extra problem.
For some reason, blender makes objects parented to triplets of vertices spin an extra amount about the triangle’s local-z axis. It does something similar with single vertices but I’m not sure why. I figure it could be because blender is applying the local z spin of all 3 vertices at once to the parented/child-of object, instead of only calculating the z spin of the average or center of the vertices, so I’m not sure how to fix that, it seems like something hard-coded into blender.