pointOnCurveInfo and a Python function that builds a new position array each frame. For an example of that, open scatterOnCurve__ 1.ma
And then run this function in the script editor.
import maya.cmds as mc
import pymel.core as pm
scatterCount = 50 # number of points to scatter/sample
posArray = 
for i in range(scatterCount):
et = 100.0/scatterCount*i
v = mc.keyframe('distribCurve',t=(et,et),q=True,eval=True)
p = pm.getAttr('pointOnCurveInfo1.position')
pm.setAttr('pointCloudToCurve1.inArray', posArray, type="vectorArray")
An expression in the scene calls buildCurve every frame. You can set the number of points to distribute on the curve with the scatterCount variable. And the animation curve in the scene called distribCurve can have keys added to it to shift the density of points along the curve.