A friend of mine implemented this very pattern into an old Leadwerks C# framework. I liked the flexibility, but it seemed bloated.
The best example usage I came across in using his system came in two ways:
1) We had components that made up the player: Camera, Controller, and Control components, that handled the Leadwerks camera, the Leadwerks controller, and our input system, respectively.
2) We had a set of components that made up the actual gameplay logic behind the player; it was a survival RPG, and you had to eat (Hunger), sleep (Energy), and drink water (Thirst)/Water. It was a "stranded on an island" game.
There was a component for each of the 3 "needs", and a Health component. Each component could talk to the other components by querying the player (parent of all 4 components) for the other using a Name, or get the entire set of 3 by using a FamilyID string.
It was pretty awesome. I have attached the source code for the entire game (C# in Leadwerks x.x, I think it was 2.0). What was also pretty cool, was that you could create components in either C# or Lua, and it made no difference. Components could still talk to each other and be interacted with the same way, though this required a .NET Lua module that allowed importing .NET types into Lua.
I also attached a RAR with the most recent version of source code for said game framework. You might be able to find a playable version of the game in the Showcase of the old Leadwerks forum.
EDIT: http://forum.leadwerks.com/viewtopic.php?f=32&t=2254&start=0 There is the old thread, but it seems I deleted the archive from the server.
Survival.zip
Modules.rar