The argument for the $ sign is not readability. If it were you'd see JavaScripter's prefixing all of their variables with a dollar sign, too. var $foo = 'bar'; is completely valid JavaScript. (Aside: $ prefix is handy in JS when holding references to jQuery objects ie $container = $('#container');)
The argument is for simplified string manipulation with magic quotes and is an homage to unix shell scripting.
Without the $ prefix string manipulation would be reserved to concatenation/printf/replacement/etc. With the $prefix you can do things like:
$base = __DIR__;
$user = (object)array('name'=>'Foo','dir'=>"foo");
$size = "lg";
$image = "$base/users/$user->dir/images/$size.jpg";
vs: image = base + "/users/" + user.dir + "/images/" + size + ".jpg"
When doing a lot of string manipulation and scripting the $ is quite handy.The dollar sign also enables variable variables and dynamic property access. i.e.
$foo = 'Hello, world.';
$bar = 'foo';
echo ${$bar}; // 'Hello, world.'
- and - $user = (object)array('name'=>'Foo','dir'=>"foo");
$prop = 'name';
echo $user->{$prop}; // 'Foo'
The dollar sign for variable variables is weak because variable variables is usually an indication of code gone awry. Dynamic property access, on the other hand, is much more useful in a dynamic language like PHP/JavaScript. That said, I believe JavaScript's solution is much more elegant. i.e.: var user = {name: "Foo", dir: "foo"};
var prop = "name";
alert(user[prop]); // 'Foo'
By overloading the index operator on objects to accept a string that dereferences to an object's property you get the same benefit in a much more elegant way.Thus the $'s primary justification is magic strings and string manipulation.