This is a peculiarity in php's in_array function; unfortunately, I can't completely explain it to you, but it revolves around your using the 0 as a key:
The code in the form_helper is:
$sel = (in_array($key, $selected)) ? ' selected="selected"' : '';
where $key = 'Australia' & $selected is actually an array, array(0=>0);
Now, where the weirdness in php occurs is:
Anytime you use a key that will evaluate to false (ie, false, 0, '') you will end up matching all string values. You can play around with different arrays and see.
So, do as Deepanshu recommended & use Array ( [0] => All [1] => Australia )
EDIT: More investigation shows that reason is not 100% correct, but the solution is still valid. I think the issue is simply that the string is being evaluated as a 0 when compared to the array values