PHP's use of variable variable's is certainly easy to abuse, but in the right hands it creates a very elegant solution.
If we took away every tool that can be misapplied and misused, we wouldn't have very many left.
This is a crude example, but imagine, eg, loading up a data model. Maybe it is lazy loaded, maybe cached, whatever, but you have an array with keys that match properties.
You could use a giant switch, a slew of if(isset()) code, or you could do something like this:
public function __construct($data = array()) {
foreach($data as $k => $v)
$this->{$k} = $v;
}
Obviously, this is POC stuff, in reality you'd want to put a 1-line check in there to ensure the $k is a valid property in that class.
AFAIK, there's nothing you can do with variable variables that you can't do another way. But there are several things you can do much easier and more elegantly.
I get your argument. Programmers all over the place inherit sucky code from newbie developers. But there is no valid argument, IMO, to a language eliminating features because they can be misapplied.