I think the aversion to using lvalue subroutines is cultural. I'm quite used to putting data, any data, into a C struct, or a C++ class object. You can shoot yourself in the foot, of course, but that's why you have to be careful.
in reply to Re^2: $foo->bar = 14;
in thread $foo->bar = 14;
At least superficially, lvalue subroutines feel a lot more like they're real, tangible things, and not some fleeting whim of a hash key. Yes, you can put in bad data, yes you can break things, but putting rubber pads on the edge of all of your functions does not make them safe. It's just defensive programming, which in many cases is dangerous if over-done.
As far as I can tell, lvalue works fine now, and when it's replaced with something better in Perl 6, which surely it will be, then there's no reason not to upgrade.
One could just as easily argue that Perl 5 is experimental. Your points 1, 2, and 3 all apply to the same degree.