You can easily access and modify the named return variables from a deferred function body.
If you had a variable declared in a block just before return, then you return it, you have no way to modify it in defer.
I personally don't like this style of code, but I can see some uses.