Your success with append mode might be Perl version/system dependent. On my macbook, I still get the black hole when I reopen in append mode. I've revised the script in the original post to also demonstrate what happens when one re-opens in append mode.
I'm also not comfortable with the idea that "one shouldn't expect" a file handle to work with dup. As far as I know, Perl doesn't give me a way to tell if a file handle was created on a string.There is no way to gracefully degrade or warn the user if they hand my subroutine a file handle and it just happens to be backed with a string.