in reply to KISS vs Feature set

Note: my english is not as good as it might look like, so if anything I write here might have more than one meaning and one of those could be taken offensive I just mean the other one, which does not :-)

I'd go always with KISS, as thats the perlish way.
I mean a lot of Perls magic comes from the fact that "what you give is what you'll be returned".
So the reason to go for KISS is simply to keep it common, eg. I should have the same expectations to your modules that I have to core modules.
Many functions act different on how they are called, but they do it consequently, so I'd suggest: if caller passes a ref so return a ref, if caller expects a string (scalar context) return the length of the array that would have been returned if the function would have been called expecting an array (list context) to be returned.
If called with an arraref return the ref to the resulting array.
At least in this way also 'baby perl' coders will be able to use your module.

Have a nice day
All decision is left to your taste