Потому что это вот такой вот простенький скриптовый язык программирования. Мне лично он не особо нравится, если говорить в глобальном плане, то у него проблемы с оптимизацией (как у того же Python), много новых «популярных решений» (отсутствие строгой типизации и прочее). У него нет прямого непосредственного доступа ни к системным вызовам, ни к памяти процессов (всё идёт через FFI). При этом выигрывает он отсутствием необходимости в компиляции, простым синтаксисом и возможностью реализовывать достаточно сложные, на первые взгляд, задачи за счёт API, которое как раз таки написано на C++. Что касается Rolbox — уверен, что они тоже думали над вопросом «а какой же ЯП дать пользователям», и в ситу примитивности и простоты Lua выбор пал на нём.
Можно ли их писать например на с++ или с#?
Начнём с простого, на C# много чего не напишешь, у него (как я прочитал, могу ошибаться) нет лёгкого доступа к Windows API. Тот же вывод системного уведомления — это уже танцы с бубном:
При этом в теории, конечно, можно написать абсолютно всё то, что ты можешь написать на Lua или C++.
Что касается самого C++ — то да, тут у тебя руки развязаны, конечно можешь писать. Можно самому, можно использовать
уже готовое API для SA-MP. Сами плагины можно писать либо в формате .exe (external), либо в формате .dll (internal), при этом надо будет подключать DLL-библиотеку к игре отдельно. Для SA-MP уже есть
готовая база адресов и база функций (пользуйся на здоровье).
Если интересно —
уроки Кинчстата могут тебе помочь разобраться. Важно отметить, что на Lua написать какой-либо плагин без API (для той же GTA V) ты не сможешь, при этом облагая навыками реверс инжиниринга на C++ у тебя открыты все дороги (но придётся ковырять игру самому, да...).