Can I paginate this get_attachment query?

Yup. You’ll need to get/set $paged with your query, like so:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
  'numberposts' => 15, 
  'orderby' => 'menu_order', 
  'order' => 'ASC', 
  'post_type' => 'attachment', 
  'post_mime_type' => 'image', 
  'post_parent' => $post->ID, 
  'paged' => $paged
  ); ?>

                <?php $photos = new WP_Query($args);  ?>
                    <?php if ( $photos->have_posts() ) :  ?>
                      <?php while ( $photos->have_posts() ) : $photos->the_post(); ?>
                        <?php $url = wp_get_attachment_image_src($post->ID); ?>
                        <a href="https://wordpress.stackexchange.com/questions/39558/<?php echo $url[0]; ?>" target="_blank" class="lightbox" rel="[<?php echo $post->ID; ?>]"><?php echo wp_get_attachment_image($post->ID,'thumbnail'); ?></a>

                    <?php endwhile; ?>
<?php
$big = 999999999; // need an unlikely integer

echo paginate_links( array(
'base' => str_replace( $big, '%#%', get_pagenum_link( $big ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $photos->max_num_pages
) );
endif;
?>