Это происходит потому, что sizeof (массив) дает вам размер размещения объекта, на который указывает массив .( array - это просто указатель на первую строку вашего многомерного массива).Однако вы выделили j массивов размером i .Следовательно, вам нужно умножить размер одной строки, который возвращается sizeof (массивом), на количество выделенных вами строк, например:
bzero(array, sizeof(array) * j);
Также обратите внимание, что sizeof (массив) будет работать только длястатически размещенные массивы.Для динамически размещенного массива вы должны написать
size_t arrayByteSize = sizeof(int) * i * j;
int *array = malloc(array2dByteSite);
bzero(array, arrayByteSize);