Make a page an archive of a custom post type

Adding a custom post type and associated archive page sounds like a great solution. As the developer you have full control of the template layout and it will always be consistent.

Adding shortcodes from visual composer comes into play if you want the list of custom posts to live on a page other than the archive. I’m sure there’s an element within visual composer that will create a custom loop for that post type (and probably a custom taxonomy within that post type). That way you have the flexibility to add those posts wherever you want to. That said, you have to like the way visual composer structures and styles the output. Additionally, you could customize the output of the shortcode and have the best of both worlds.

So to answer the question if it’s doable? YES!

But is there any other way?

Yes, you could add a custom query to a template and loop our you custom posts wherever you want them.

All three options are viable. It depends on what the needs of your end user are, and your comfort level with coding custom templates.