I had the same problem, and since the creation of those test names is not injectable, I did a nasty workaround:
This whole test-name is completely decoupled from the data that is provided with each test-case. Hence you can just overwrite / shadow the method that creates those test-names.
The parameter-part of those test-names is created in matlab.unittest.internal.getParameterNameString
So if you create a method within package-folders in your path that matches this method name, you'll just shadow the original implementation.
There I switched out the paramNames line with: paramNames = arrayfun(@(p) transformThingToString(p.Value), params, 'UniformOutput', false);
And transformThingToString is a method that is able to translate an arbitrary object to something "displayable". Arrays / strings / cells / char-arrays are trivial, most of our classes have an toString-extension, function handles are translated with func2str.
Not nice, not stable, but because we don't switch out the matlab version on our test-agents all the time, this is working fine for us.