I'm very late to the party, but I saw a video featured here on BSE:
Youtube: The Simple Solution to Blender's Bezier Curve Problem
So I thought I'll share my solution. Similar to the one of Robin Betts:
It aligns correctly to the 3D splines:
It's important the 2nd Euler Align is X not Y:
However the smooth shading for the above setup FAILS!
To fix it, either Realize Instances and Merge By Distance:
Or for performance, capture vertex normals before cutting the sphere and use that in the shader:
If you can still see a seam on the caps, this is because the surface is smooth, but the curvature change isn't (next derivative of smoothness), I explain it more thoroughly (and how to further smooth it) here:
What is causing this stretched shading on the mesh and how can I fix it?