It sounds like the co-ordinates 0,0,0 in your model is at one corner of it, if that's so, then any rotate call is going to rotate it around that point. You can get it to appear to rotate aroudn the origin, by doing a rotate, then translate by half the width/height/depth of the object, before drawing it (I think)
As for why it works on box() etc with no hassle, it's because those objects are centered around 0,0,0 e.g. some verticies have negative values compared to the position you place the object.
This code will draw a cube, notice how half the co-ordinates are negative, and they're evenly spread about the position 0,0,0, and hence will be able to be rotated around the origin without any messing around.
Code:beginShape(QUADS);
vertex(-5,-5,-5); vertex(5,-5,-5); vertex(5,5,-5); vertex(-5,5,-5);
vertex(-5,-5,5); vertex(5,-5,5); vertex(5,5,5); vertex(-5,5,5);
vertex(-5,-5,-5); vertex(-5,5,-5); vertex(-5,5,5); vertex(-5,-5,5);
vertex(5,-5,-5); vertex(5,5,-5); vertex(5,5,5); vertex(5,-5,5);
vertex(-5,-5,-5); vertex(5,-5,-5); vertex(5,-5,5); vertex(-5,-5,5);
vertex(-5,5,-5); vertex(5,5,-5); vertex(5,5,5); vertex(-5,5,5);
endShape();