Это зависит от вас (конечно), но звучит так, будто вам нужен один контроллер, если теги и категории сами по себе ничего не значат, без статей.
Ради семантики я бы переименовал его в Articles.php
с помощью "s". Тогда у вас будет:
/articles/category/{$category_id}
Где "категория" - это метод класса / контроллера Articles
. Просто не забудьте изменить имя класса контроллера.
Я бы, вероятно, переименовал метод "tags" в "tagged", аналогично тому, что делает переполнение стека, поэтому url имеет немного больше смысла:
/articles/tagged/{$tag_slug}
Аналогично:
http://stackoverflow.com/questions/tagged/codeigniter
Для отдельных статей создайте метод с именем "view":
/articles/view/{$article_slug}
Если «Теги» или «Категории» были автономными объектами или могут содержать больше вещей, чем просто Статьи, вы можете захотеть сделать их каждый своим собственным контроллером, но в этом случае я не думаю, что вам нужно.