I also don't understand why `subr-x.el` exists.
First of all, why not put `string-*` functions in a `string.el`? It's surprising that no such file exists at the moment.
Secondly, why are these functions considered "experimental"? If a package depends on a function in `subr-x` that is later removed, is it any less inconvenient for the package author than if `subr-x` was not experimental? No. Empirically, the `string-*` and `thread-*` functions see a lot of use in the wild, so (re)moving them at this point would cause quite an uproar.
If functions need to considered experimental, at least put them in the "right" place--e.g. `string-empty-p` in `string.el`. That way, even if the function's implementation needed to be modified, package authors won't need to `require` a different package. Organization matters.