Hi, Sylxeria
The way I checked your scene was by zeroing out the rig controls' psr, and then quickly running through the joints via the object manager with the move tool set to local to see each joint's axis. Until joint 23, the chain maintained a relatively consistent up axis, which in this case was the Y axis, but afterwards started to spin around the Z, causing the up axis (Y axis) to tilt off course. This is a fairly easy fix using the Joint Align Tool.
Just as a tip for best practices, it's a good idea to freeze your joints before applying ik or binding the rig in order to have a clean starting rig or possibly to help troubleshoot later if necessary.
Regarding best approaches for this rig - a spline ik is definitely a good base, but could certainly have it's functionality expanded.
Just as an example, you could easily achieve an effect where the snake could roll it's tail up (or it's head) by creating an fk chain of joints or nulls and parenting the ik spline controls underneath. This is a motion and pose that would be tedious to manually animate using the spline ik controls.
There are other features that you may want to add depending on the needs of your project, and these should be incorporated into your rig and built upon to suit your needs and preferences.
I hope this helps