What is the benefit of using unstable functions if those should not be used in production?
Can you name an example use case in favour of the unstable versions?
I think the best use case for unstableMakeIsData
is for rapid prototyping. You can use it without having to know the target type's constructor. This also means you don't have to change the call to it every time you change the type while developing the contract.
Ultimately, once the type is more solidified, you'll want to use makeIsDataIndexed
with an explicit mapping of the constructor. This is the more "strict" and safe way to do it for production.