General advice on addressing content-centric pages

“advice on the best approach” questions do not make for very good questions here as they tend to be pretty broad and subject to opinion, but I’ll give you some options and hope for the best.

Option 1:

You should be able to use ordinary pages for this. Create templates for your custom content just as you are considering in your first option. Then you can conditionally add metaboxes based on those template choices.

function conditional_box_loader($post) {
  $template = (!empty($post->page_template)) ? $post->page_template : 'default';
  switch ($template) {
    case 'template-one.php' :
      // add metaboxes for this template
    break;
    case 'template-two.php' :
      // add metaboxes for this template
    break;
    default :
      // add fallback boxes, if required.
      add_meta_box(
        'read_only_content_box', // id, used as the html id att
        __( 'Post Content (Read Only)' ), // meta box title
        'read_only_cb', // callback function, spits out the content
        'page', // post type or page. This adds to posts only
        'advanced', // context, where on the screen
        'low' // priority, where should this go in the context
      );
  }
}
// callback I stole from another answer I wrote earlier today
function read_only_cb($post) {
  echo apply_filters('the_content',$post->post_content);
}

Option 2 :

You can do essentially the same thing with a CPT and a dedicated post type might prove to be more convenient.

Option 3 :

Instead of switching based on a template choice you could switch based on a post title, ID, or create a meta box with a “master” switch that would let you pick the meta box “set” that you want to enable.