NIP-10 is an over optimization from my point of view. Where my base case is that I store events in a graph and know exactly which thread any note belongs to by it's direct parent. And I know every descendent from the root.
Otherwise, any client that doesn't use NIP-10 will break your app. And it's too easy to not use NIP-10 because it's not strictly necessary from a user's point of view, and a part of your life will be dedicated spent policing other clients' NIP-10 compliance.