Katsudon is 866 calories, which puts it above gyudon (633) and oyakodon (631) by a wide margin, and the reason is simple: you are eating a whole tonkatsu, breading and oil included, and then it gets simmered in a sauce with sugar. A 120g cutlet is about 390 calories, the 230g of rice under it is 360, and the egg and sweet dashi bring it home. A bowl at a soba shop or Katsuya is 900 to 1,000 yen.
The egg is the part people underestimate. One beaten egg is 80 calories, and shops often use one and a half. The sauce it cooks in has sugar and mirin, so the onion and sauce together are 50 to 60 calories rather than the near zero you get with a clear dashi. That is why katsudon runs 130 calories above a plain tonkatsu plus rice even though it looks like the same ingredients.
The size problem is that katsudon is often the 'treat' order after a hard day, and it usually comes with a small bowl of soba or udon on the side at a soba shop. That set is around 1,100 calories. If you want the cutlet, katsudon at 866 is still a better deal than the katsu curry at CoCo Ichibanya, which is 1,116 for a regular rice serving.