Well, it depends on how you store your data. If you store your data in such a way that you can use vertex arrays, then use it. You don’t have to call OpenGL-functions for each vertex/normal/texturecoordinate and so on, so this is a way of gaining speed.
If you store all polygons like a linked list of polygons, or an array of polygons (where each polygonstructure holds three vertices, a normal, color and so on, for example), then the best way to draw might be using glBegin/glEnd pairs.
And interleaved arrays is almost the same as “regular” vertex arrays. Use this if it’s suitable.