Sorry Craig, my mistake. You can get a Region by using:
g = ParametricPlot[spl[t], {t, 0, 1}] gRegion = DiscretizeGraphics[g]
That works as a region. For example:
ArcLength[gRegion]
The strange result is simply due to evaluation:
In[3]:= First[foo[bar][t]] Out[3]= t
ParametricRegion isn't going to be very useful without an explicit symbolic formula. You can get a MeshRegion, however:
DiscretizeGraphics[BSplineCurve[pts]]
Have you looked at the plot of spl? Is that what was intended? It looks like the problem is in the spline function.