On my php 5.3.5 installation, i discovered that value can be set by reference and not by copy ... depending the context..
so this is différent from what a regular array() 
<?php
function set(&$x, &$a )
{
    $x[] = $a;
}
$x = new ArrayObject();
$y = array();
$z = new ArrayObject();
$a =  array( 'foo' );
set($y,$a);
set($x,$a);
$z[]=$a;
$a = array( 'bar');
set($x,$a);
set($y,$a);
$z[]=$a;
print_r($x);
print_r($y);
print_r($z);
?>
// output 
ArrayObject Object
(
    [storage:ArrayObject:private] => Array
        (
            [0] => Array
                (
                    [0] => bar
                )
            [1] => Array
                (
                    [0] => bar
                )
        )
)
Array
(
    [0] => Array
        (
            [0] => foo
        )
    [1] => Array
        (
            [0] => bar
        )
)
ArrayObject Object
(
    [storage:ArrayObject:private] => Array
        (
            [0] => Array
                (
                    [0] => bar
                )
            [1] => Array
                (
                    [0] => bar
                )
        )
)