Why is registering a sidebar for each page causing my sidebars to reset?

You need to wrap this in a function then add it to the widgets_init action. Also the register sidebar function does not have $arguments for sort_column or sort_order. I would also change the id to 'sidebar-'.$page->ID

add_action( 'widgets_init', 'prefix_register_sidebars' );
function prefix_register_sidebars() {
    foreach($pages as $page){
        register_sidebar( array(
        'name'=>$page->post_title, 
        'id'=> 'sidebar-'.$page->ID,
        'before_widget'   => '<div id="%1$s" class="'.$page->slug.' widget %2$s">',
        'after_widget'    => '</div>',
        'before_title'    => '<h3>',
        'after_title'     => '</h3>'
        )
        ); 
}