Это потому, что CLR определяет только ограниченное количество допустимых операндов для инструкции Add IL. Допустимые значения: Int32, Int64, Single и Double. Также IntPtr, но это, как правило, отключается во многих языках.
Таким образом, добавление константы в байт требует, чтобы байт был сначала преобразован в Int32. Результатом добавления является Int32. Который не вписывается обратно в байт. Если вы не используете больший молоток. В остальном это здорово, вероятность того, что вы переполните Byte.MaxValue, довольно велика.
Обратите внимание, что есть языки, которые автоматически приводятся, VB.NET является одним из них. Но он также автоматически генерирует OverflowException. Очевидно, что не тот, который вы используете, ни C #. Это лучший выбор, тест на переполнение не так уж и дешев.