Try ALT-G/ALT-R/ALT-S on both the curve and the Array source CUBE. I typically parent the array source to the curve after I get it lined up, then I can just move the curve and the whole rig stays in place.
Bezier Curve with large slope seems to be the problem. If you subdevide the curve many times, there will be lot more points with small slopes. But the end vertexes on the curve still look wired. I erased it. Than it seems to work ok. Here I have about 3 shells between each curve vertex.
Oh well its still deforming no matter what. With cylinders if you keep the array on the curve and don’t make sharp turns, appearance of deformation is minimal. Curved array is not treating object as rigid meshes. Only way to get around this is to array an invisible object, than link ditto object to those invisible objects. I tried Empty but you can’t array Empty. Also duplicate function in Blender really doesn’t create dittos.