As far as I know, it works the same way as in Dissidia. You get EXP for dealing HP damage and even more for meeting certain criteria. Like, playing on your calender special day, fighting a higher lvl opponent, fighting a stronger AI, fighting with the chocobo play plan bonus while it's high, using special EXP increasing accessories and so on.
When you think about it, there are a good number of variables so I guess it could seem random at times. The Chocobo play plan bonus changes all the time so that's probably the big offender there.