You have implemented the entity pattern but you are finding that as the number of game objects grow your code is becoming increasingly complex and unwieldy as you update and render each entity. You want to add the ability to add and remove game objects dynamically.
This pattern is a similar to the proxy pattern. The group exposes some of the behavior defined by the entity class allowing it to act as a proxy for a group of entities. In addition, the group usually incorporates additional logic which goes beyond emulating the entity pattern. For instance, the group may contain input listeners, a physics model, end conditions, etc. In this way it is common that this pattern ends up playing the role of the model in the mvc pattern.
Adopting the group pattern allows you to consolidate the complexity associated with maintaining a collection of game objects. In addition, if you pass an instance of the group to a game object it is possible for the object to add new objects to or remove itself from the group. (For example, if you have a ship which fires missiles and can be destroyed.)
By placing all of the game objects behind this interface you make it more difficult for each game object as well as the game controller to find out information about other game objects. For instance, most games need to track the state of the player. Without a direct reference to the player this becomes a challenge. Oftentimes this problem is addressed by implementing the observer pattern or by adding a method to the group to retrieve certain entities.