It's not difficult in the way of complicated. It is just that the arrays are used in many places. On teh other hand I already got that request a few times for different reasons. Currently we have 4 axis (cartesian) or 5 axis (nonlinear) arrays for X,Y, Z, E and VrutalAxis(nonlinear). So adding motors A, B, C is essentially increasing the array sizes, initalizing them and fill them. In Bresenham it is straight forward and if you check how xyz is handled.
Biggest question is how to handle jerks. I guess you would take them as independent motors for jerk.
So what I would do is compute an array length that is used in all loops. This gets computed from
#define HAS_A_AXIS 1
#define HAS_B_AXIS 1
#define HAS_C_AXIS 1
and from this compute
A_AXIS_IDX / B_AXIS_IDX for the conditionals where they are used.
That way it would be flexible to use up to 3 more axis and make users happy.
Oh forgot endstops. Guess that would also require endstop handling.
So you see not difficult, just many changes here and there.