One of our use cases used factory pattern when creating contract instances. You'd get contract address by subscribing to event from the blockchain. Issue I ran into was that metamask would not get events from the blockchain even though it should. There we're a lot of issues with the feature, some resolved, some still not.
Basically this issue: https://github.com/MetaMask/metamask-extension/issues/2393