BSP, but with curved surfaces (NURBS? kernelized support vectors?)
You can absolutely do it with kernelized support vectors.  I don't have a publication handy but I've implemented it myself before.  You'll probably want to use quadrics for the split planes, and unfortunately I only found a suboptimal way to do csg (Naylor's original bsp/csg algorithm from 1990); there may be a better way.  But it's very possible, and allows for a couple really interesting things:


ray segment/quadric bsp intersection tests can be done extremely effectively with the following procedure: first, early exit if the two points are not in the same node, then ray-march using the signed distance from the nearest quadric hyperplane, which is easy to compute by traversing the tree.  This becomes very efficient, especially for certain smoother shapes, because the trees tend to be very shallow.
you can fit the hyperplanes to a sampling of a signed distance function by using linear least squares.  Recursively split until all sample points are in the same node of the tree and the mean square error of the signed distance to the shape is below a certain tolerable level, at each stage using least squares to optimize the coefficients of the quadric split.


as implied in (1), determining whether one point is accessible from another reduces to determining whether they are in the same node of a very shallow tree, useful for 3d blob detection and such.



As far as the implementation, it really is simple, as you have hinted.  Just use a few more coefficients in the hyperplanar equation for each node, and the rest will flow.   But if you want to look at my implementation, it's somewhere buried in my github (vpostman).