Is it necessary to prefix every css class in a theme framework?

Prefixes are used to avoid conflicts. If your framework is used to build a theme, the chances are high that there isn’t a second theme framework in use at the same time. So there is no conflict, and therefore no need for a prefix.

The exception are CSS classes generated by the WordPress core, for example in the comment form. If you are using the same class names for an entirely different purpose, you need a prefix, or better class names for your use case.