В случае 1 MessageBox является статическим классом, у него нет конструкторов (обновление - у него есть частный конструктор, который говорит о рефлекторе, но ОП выдает ошибочное / неверное сообщение об ошибке компилятора.) Статические классы определяются так:
public static class MessageBox { }
Статический класс может иметь только статические методы, и как таковой не предназначен для создания экземпляров.
В случае 2 MyClass не является статическим классом, и компилятор генерирует конструктор по умолчанию для вас, если вы не определяете никаких конструкторов.
ОБНОВЛЕНИЕ: всем нижестоящим: скомпилируйте проект со статическим классом и изучите его в отражателе - он декомпилируется без ключевого слова static, потому что для статического класса нет MSIL или метаданных; компилятор (в .net 2.0 или новее) генерирует абстрактный запечатанный класс без конструкторов. Ключевое слово «статический» - просто синтаксический сахар. Кроме того, в 1.0 / 1.1 .NET (когда был создан MessageBox) статическое ключевое слово не существовало для классов, и закрытый / закрытый ctor был принятым шаблоном.