With regards to duplicate content, as long as the correct canonical tag is set to match the original page, it should be fine.
In saying that, it’s definitely not optimal to have duplicate pages with exactly the same content on them, and then rely on the canonical tag to get you out of trouble with the duplicate content.
With regards to the redirect question, if the page URL (with or without the query parameter) doesn’t really exist, then it should go to a 404 page. The last thing you want is loads of internal 301’s for no reason. The less 301’s you have on your site the better.
(And if you’re worried about the visitor experience going straight to a 404, then just implement a site map or menu on your 404 page to help the visitor choose where to go).
But it also sounds like a bit of a unique case with your query parameters. So you could implement a wildcard redirect in htaccess if those URLs should all definitely resolve to that single page etc.