Для меня это выглядит как утечка памяти в SBT, так как в моем случае программа компилируется и успешно работает примерно 3-5 раз, прежде чем выполнить исключение, которое исправлено при перезапуске SBT.
Наиболее адекватным решением действительно является -XX:MaxPermSize=
параметр JVM, как предлагает Алексей Романов, или периодически перезапускать SBT, если это помогает.
Но есть и другой интересный способ: попробуйте перейти на Java 8 . AFAIK, он больше не использует PermGen и, вероятно, невосприимчив к этому исключению.
Я все еще надеюсь, что авторы SBT решат эту проблему в будущих версиях.