There absolutely are use cases!
Any examples?
Sure! I mean one of the main features of taproot could be substantially implemented with just using OP_CAT.
https://blockstream.com/2015/08/24/en-treesignatures/ (but it's much more cpu/space/fee efficient to implement it directly).
Using string operators on and either a verify-signature-of-data-on-stack or some improved arithmetic operations lets you implement vaults:
https://blockstream.com/2016/11/02/en-covenants-in-elements-alpha/Using substr (or op_cat) you can implement a single show signature-- a output that requires a signature where if someone signs for it more than once, they'll leak the private key. (You require that the signature use a specific R value). You can use this to make transactions with a double spend penalty.
I think arguably of all the disabled opcodes the "string" ones are really the most useful.