There's no optimal size for repeating textures. Each time it repeats, it costs 2 triangles, so if you have it very small, it will be high in polycount instead. It's a balancing act. If you have speed to spare on the poly count side, bu no memory then use a very small texture . If you're starved for poly performance but have plenty of memory, then use a larger texture.