I've found the most efficient way of maxing out affection and enjoyment. It's not quick but it's the quickest way possible while ensuring both affection and enjoyment levels don't fall.
The only major rule is never EVER pet them. Though petting them can help raise affection it will always drop enjoyment level. Petting is absolutely unnecessary.
First what you need to do is unlock 'Head It' level 'Unlimited'. Reach a score of over 200 (It gets easier with practice) and you will receive 4 Pokepuffs with swirls and pieces on top. These are the Pokepuffs that give 5 hearts. Play Head It with a score of over 200 a second time so you have enough of these Pokepuffs.
Next, you feed the Pokepuffs to you Pokémon until it is full. It will take 5 Pokepuffs to make it full. By this point, it'll most likely let out a burst of 5 hearts two to three times in a row but if not, you'll need to play again to work up its hunger.
So the games played twice in a row will ensure that it's enjoyment is always maxed while you build the affection level by making it full after every set of games. The Pokepuffs you feed it before and after games all count as points to it's next level of affection and it will take longer each time to reach the next level of affection hearts (when it gushes hearts) while repeating these steps and this is essentially how the balance works.
So remember:
- Play Head Its 'Unlimited' Twice in a row to create hunger and earn more Swirl Pokepuffs.
- Feed Swirl and topping Pokepuffs until full.
- Repeat
- Never EVER pet them.
Once it gushes stars 5 seperate times it's affection and enjoyment will be maxed and it will stay that way. This should all take 30-40 minutes and it works without fail. I have done this successfully with many different Pokémon.