Wow, that's a pretty crazy model (in terms of there is a lot of boxes).
Instead of changing the offset I think you need to use the setRotationPoint() method. That is what places the rotation point in 3D space relative to the entity position.
The way it works, if I remember correctly is:
1) You create a box by specifying the size in x, y, z.
2) You also specify the offset which is the point WITHIN the box where rotation occurs.
3) You then need to specify the rotation point which is actually placing the block in space.
4) You can then set rotation angle (around that point).
Note that I believe that the naming of the methods is sort of misleading. You would think that setting the rotation point would imply setting the point within the block where it rotates; but it is the opposite, the offset does that and the set rotation point actually moves the whole block.
Anyway, that is what I remember from when I used to do complicated animations.
Also, for easier debugging you might want to try a much simpler model. Like maybe just make one block that you can control up and down first.