Follow bezier with scale variation
The trick here is using the same technique as described in this answer, but tick the option Scale for Duplifaces.


Just create one plane mesh, make sure it is 1x1 units in size. Make sure you apply its scale if you scale it in Object Mode.
Create you sphere, at the same scene coordinate as your plane. Also scale it so it is 1x1x1 units in size. Make sure you apply its scale if you scale it in Object Mode.
Create your Bezier curve object, adjust shape as desired but make sure it stays at the same scene coordinate as your plane and sphere.
Create one Empty object type and scale it to 95% scale (or adjust as desired). Once again make sure it stays at the same scene coordinate as your plane, and sphere.





Add an Array modifier to the plane, set the Empty as Object Offset and adjust the relative spacing so it matches the scale factor of the empty. In my case for 95% scale the Relative Offset should be 0.975.





Now just parent the sphere to the plane, activate Duplifaces and tick the option Scale so duplis are sized according to face area.
Adjust the Array as necessary.