The complexity of WordPress themes can range in style from brochure-ware, to user areas and mailing lists. Having built 50+ of these themes the past few years, the process of establishing template structure and behaviour is well matured.
Sometimes we have to beef-up a theme with some form of specific functionality. This is done by creating a plugin. For example, it might be that one is needed to handle API requests or perhaps needed to provide custom user management tools. Having such plugins can extend the core functionality of your site, enabling your team to get the most out of WordPress by having exactly what they need.