build modifier - perpetual loop
Duarte's solution is the best solution I can think of. However, it will not work for more than cycle, meaning it worn't repeat more than once. To solve this, Animation Nodes can be used to automate setting the start frame and reverse options of a single build modifier.

Build Modifier

Lets say we want the length of each build to be 30 frame, then for the first 30 frames, Reverse will be False and Start will be zero, for the next 30 frames, Reverse will be True and Start will be 30, for the next 30 frame, Reverse will be False and Start will be 60, and so on. This pattern can be easily achieved using floor division, if we floor division the time by 30, the output will be 0 for the first 30 frames, 1 for the next 30 frames, 2 for the next 30 frames, 3 for the next 30 frames and so on. If we multiplied this output by 30, we get the Start value, which is $0, 30, 60, 90, \dots$. If we modulo the output by 2, we get the pattern $0, 1, 0, 1, \dots$ or in other words, $\text{False}, \text{True}, \text{False}, \text{True}, \dots$ which is the required pattern for Reverse. So we can imlement this and write the values using the Object Attribute Output Node as follows:



Which results:



Animation Nodes

Let me, in addition, show you how to replicate the build modifier in Animation Nodes. All we have to do is slice the polygon indices list using the Slice List Node, where the end index starts from zero, goes to the full length of the list, goes back to zero, and so on. The Repeat Time can be used to create a ping pong pattern where the output goes from zero to 30, then back to zero, and so on. If we divided that by 30, it will be in range $[0, 1]$, if we multiply it by the length of the list, we get the required pattern, and the node tree becomes:



And the result is exactly the same as the build modifier: