So from the replies I have so far, it seems that Perl is not clever enough to optimize this case. I think this optimization would have been quite easy to implement: since you know the context for the return value at the time of calling the sub, why return an array when you know a scalar is required?
Cheers!
Update: After a few more replies with some benchmarking evidence (thanks davido and revdiablo) it appears my original guess was correct and that Perl is clever after all. Phew! All is right with the world.