We could use tags for this, but with an issue type hierarchy you can strongly-type your database i.e. make sure that people don't put a Signal under a high-level business requirement.
And different issue types in JIRA allows us to have different workflows and optional fields for different types of issues, ie in the use-case above the Requirement field has an extra field to mention a corresponding document and most of the issue types except business requirement have an extra field to fill in the source file where we will implement it.