As far as I am aware, the only documented reason to use an entity group is because it can give you strong consistency, which does not necessarily require a transaction. To take your example, let's imagine we are trying to decide if a user's "favourite colors" should be a list property on the User entity, a separate entity with a "user" reference (not in the same entity group), or a separate entity with the same parent. Consider a user takes the following actions:
1. Add "blue" to my list of favourite colors.
2. Query for my favourite colors.
Case: Single entity: Result: You will always see the last color that was added, since the read and write is of the same entity.
Case: Multiple entities, not in an entity group. Result: Unknown! You might see "blue", you might not. If there are many concurrent additions and deletions, you might see any combination of them. That is because queries across entities are weakly consistent.
Case: Multiple entities in an entity group, using an ancestor query. Result: You will see blue. This query gives you strong consistency, even without the transaction.
Note this has nothing to do with latency or throughput. I have not seen suggestions in the app engine documents about either (if they exist, let me know!)
For details, see: