List ALL posts by author on author archive

your get_posts overrides the normal query_posts query. For this to work properly you should use query_posts and merge in your numberposts setting with the original query, like so:

global $wp_query;
$args = array_merge( $wp_query->query, array( 'numberposts' => -1 ) );
query_posts( $args );

Then you’ll no longer need a custom loop either, you could just use a normal loop.