I'd say go with categories: it seems your categories are already being used for 'back-end' purposes, so I'd imagine they're already hidden from the front-end users.
Otherwise, go for a custom taxonomy (something like 'issue' taxonomy perhaps), which is a bit more work, but gives you a lot more control. Take a look at the register_taxonomy function as a starting point.
If you want to go all the way, you could create a widget for the front-end which would list all those custom taxonomy terms (i.e. issues) so that users could visit the old issues with one click.
It's tough to consider all possible scenarios, but assuming the 'issue' web pages are created by the
index.php file of your theme, when visiting something like 'example.com/category/issue_1' (in case you're using native categories) or 'example.com/issue/1' (if using a custom taxonomy) WP would automatically filter only those articles belonging to issue 1, and
index.php would process and display only those articles. (Note that this also assumes that all taxonomies are correctly assigned, and that you have pretty permalinks, etc. But you get the idea.) If this is not the way your theme is structured, you should really consider it: it's only one file to maintain, and it let's WP's native query functionality do the rest.
I see no need for a more sophisticated or customized approach than the two options above. WordPress' native functionality is pretty robust as it is. How to create the theme which displays the information that's been organized in a certain way is a much more open-ended discussion, though.