Have you tried to define the default value of the array as a new can.List(), like 'value: function(){return new can.List()}'?
This should keep the array type even all elements removed from it.