Since you mention the Build modifier and the problem being the order of this modifier is not satisfying, you should be happy to learn the order of the modifier is the indices of the faces, which can be easily sorted by their distance from the 3D cursor:
(make sure you're in 3 Face Selection Mode and your faces are selected)

Now your build modifier (in reversed order) works as expected:

If you're unhappy with how easy it was, you can apply some additional tricks…
Advanced sorting using Python
(run in Edit Mode)
import bmesh
from bpy import context as C
from math import atan2
me = C.object.data
bm = bmesh.from_edit_mesh(C.object.data)
coords = [f.calc_center_median().yx for f in bm.faces]
distances_to_center = (co.length for co in coords)
angles = (atan2(*co) for co in coords)
combined = zip(angles, distances_to_center, bm.faces[:])
sorted_by_angle_and_distance = sorted(combined, key=lambda x:x[0]+x[1]*20)
for i, (angle, _, face) in enumerate(sorted_by_angle_and_distance):
face.index = i
bm.faces.sort()
bmesh.update_edit_mesh(me)

Varying animation speed
Since the Build modifier has a constant speed in faces per frame, as it approaches the center of the circle, it seems to speed up, because there's just less faces per each ring as you get closer to the center (at least if your topology is a grid, rather than something like this). Consider setting the animation length to the number of faces, and the starting frame to a custom driver - for an explanation how to do so see this thread:
Build animation modifier build up and then reverse