Quite simply, when you build interop components right, this sort of accidental interop shows up all the time. It's really nice when it does too, because you can create a lot of value through it with very little engineering investment.
Lego could have spent less time on their very simple building block, but because of the attention they spent, there are SO many more ways to connect those blocks, some of them I am certain were never originally intended.
All too often I've been told those more generalized solutions are "Scope expansions", because they don't fit the use case, and the benefits of generalization aren't immediately experienced for the specific use can I'm asked to solve for. Yet my own experience tells me that the value I get out of more general solutions is well worth the additional engineering attention. It may not help THIS use case, but when I can apply the same solution to the next use case that comes along, then I've got a clear win. Remember Avian flu? That threat turned out to be a bust yet CDC spent a good bit of money on a solution for that use case. Could they use any of it for Swine flu? Yeah, you really don't want to know the answer to that.