Да - вы можете определить видимость первичного конструктора, указав модификаторы после имени класса, например:
class Foo private (a: Int, b: String) {
// ...
}
И тогда, конечно, вспомогательные конструкторы все еще могут (фактически, должны) ссылатьсяэтот первичный конструктор, хотя он все еще объявляется как открытый.