Вам совсем не нужно сдвигаться. Знаковый бит является самым значимым (= крайним левым) битом вашего байтового массива. Поскольку вы знаете, что ваши числа всегда будут положительными, оно гарантированно будет равно 0. Однако массив в целом выровнен по правому краю.
Итак, есть два случая: ваш самый левый байт равен 0x00 или нет. Если это 0x00, вы можете спокойно сбросить его:
byte[] array = bigInteger.toByteArray();
if (array[0] == 0) {
byte[] tmp = new byte[array.length - 1];
System.arraycopy(array, 1, tmp, 0, tmp.length);
array = tmp;
}
Если это не 0, то вы не можете его удалить - но ваш массив уже будет в нужном вам представлении, поэтому вам не нужно ничего делать.
Приведенный выше код должен работать в обоих случаях.