Я думаю, что причина в том, что локальные классы не могут иметь статические члены (или функции, определенные вне класса), больше по синтаксическим, чем по семантическим причинам. Статические члены могут быть реализованы так же, как и в нелокальных классах: статика будет иметь время жизни, начинающееся при первом вызове функции, так же, как статические переменные, объявленные внутри функции. Компилятор должен убедиться, что статические члены были инициализированы при создании первого экземпляра класса.
Представьте себе проблему искажения имени теперь, когда подпись включающей функции становится частью имени. ; -)
Причина, по которой вы не можете получить доступ к локальным переменным или параметрам функции в локальном классе, заключается в том, что это усложнит код, необходимый для реализации класса, с небольшим усилением. Нестатические члены класса обычно доступны через указатель this или указатель на конкретный экземпляр. Для доступа к переменным и параметрам, локальным для включающей функции, потребуется некоторый механизм, чтобы сделать их доступными. Этот механизм мог бы быть довольно тривиальным, если бы функции были встроены, но что происходит, когда их нет?