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?