Hi curebiace, you aren't doing something wrong with the Curve Modifier, this is just how it works.
There are other options, depending on your needs; you can try using instancing by converting the Curve to a Mesh, maybe diissolving a few vertices of that newly created Mesh and parent the Cube to the curvemesh and instance on the vertices. Align to vertex normals if you want, but then you probably need to adjust the normals...not much fun, but sometimes you can just get away with it:
Using a particle system has the same problem as Instancing I think.
A better way can be found here: https://cgcookie.com/lesson/building-the-tread-curve-system
He uses it for rigging, but the same principle can be used in your case. A bit advanced, but he explains it really well.
I do not know of an easier way to do this in Blender, but if you find one,or someone else here knows a better way, please let us know!
There is also a way to parent your object to a plane and then make the plan deform along the curve and turn on instancing in the plane’s properties. You can instance the children and hide the parent and all of the children follow along the curve without deforming but the parent plane deforms and remains hidden.
it’s a work around on a modifier that is meant to deform.
spikeyxxx also mentions a really good method as well.
I really need to video record this stuff as a part of my curve you tube tutorials. I’ll try to post back here once I have completed that. (Might be a couple of weeks though)
You could also use an object with just one vertex as instancer which is distributed alon the curve using an "Array Modifier" (with "Constant Offset" checked since this vertex object has no extension for "Relative Offset") and a "Curve Modifier":
File is here.