I don't know the actual answer, but from my understanding of QFT the answer is going to be roughly this shape:
Charge is not actually a quantity on the real number line; it's more of a "count" of something. Not sure what exactly. The "topological defect" model of charges in 2d is a decent analogy though, in which a charge can be e.g. a count of how many vortices there are in a field which are oriented in a certain direction (picture a bathtub with a bunch of drains, and ask, how many tornado-like vortices, if we count clockwise vortices as +1 and counterclockwise as -1, are there? The number can vary but obviously it has to be an integer because what would half a vortex even mean?)
But that model is too simple for charge, since quarks have +-1/3 or 2/3 but the result always adds up to an integer in a hadron. Maybe it's something like a type of winding number or linking number? I don't know. Whatever it is, when the "correct" explanation is found, it will be obvious why it is always an integer and why its constituents are always 1/3 or 2/3, and it will no longer seem interesting to ask why it can't be any old fraction, because that misunderstands the "type" of object that it is counting.
Charge is not actually a quantity on the real number line; it's more of a "count" of something. Not sure what exactly. The "topological defect" model of charges in 2d is a decent analogy though, in which a charge can be e.g. a count of how many vortices there are in a field which are oriented in a certain direction (picture a bathtub with a bunch of drains, and ask, how many tornado-like vortices, if we count clockwise vortices as +1 and counterclockwise as -1, are there? The number can vary but obviously it has to be an integer because what would half a vortex even mean?)
But that model is too simple for charge, since quarks have +-1/3 or 2/3 but the result always adds up to an integer in a hadron. Maybe it's something like a type of winding number or linking number? I don't know. Whatever it is, when the "correct" explanation is found, it will be obvious why it is always an integer and why its constituents are always 1/3 or 2/3, and it will no longer seem interesting to ask why it can't be any old fraction, because that misunderstands the "type" of object that it is counting.