Here's the initial prototype of the 2.5D system in Unity. It actually does currently support branching paths, but I never bothered to jump on any while I was capturing this

Basically, it works by defining a ‘forward’ vector based on the closest curve normal to the actor. The actor then has its own ‘forward’ vector, which is constantly being ‘pushed’ towards the curves ‘forward’ vector, by a ratio that depends on the distance between where those vectors are pointing. I was worried at first that this was a fairly fiddly way to do it, but it seems pretty robust. Most of the jittery movements in the demo are actually because the camera is going to be much more complex than the characters and needs a lot of work still.
I am currently using an asset called BGCurve for the splines, but it might be a bit overkill. The nature of a spinning camera in a platformer requires a fairly wide curve or else it gets a little bit funny, so I definitely at least have to put in some hard clamps on that. It may make more sense to have my own purpose build spline implementation, but I haven’t looked too far into that at this point.
Basic platforming and extremely basic non-player AI is implemented and both sorts of actors follow the curves quite successfully. I’ve stress-tested the system with roughly 150 actors and it holds up just fine, but my PC is also fairly beastly so I’m not sure I can use it as a benchmark.
Right now, I'm trying to decide where to go next. I'm considering polishing up the basics and releasing it as a paid asset to help fund the game, since there's actually nothing on the Asset Store like it, but I have stumbled on posts where people try with limited success to implement the same idea. The difficulty lies in how integrated actor movement is to the system, though. It would be tough to add other character actions without knowing how it works in it's current state... so I'm not sure how much sense it would make as an asset.
I think I need to polish up the curve editing at least, or else I'm going to be pulling my hair out trying to make real levels. The camera also needs a lot of work, and currently there are several collision edge-cases that aren't handled properly.