затем, что byteLength - это длина данных (используемая память), а length - размер буфера (заполненная + зарезервированная)
Buffer.alloc(0xFF), length - 255, byteLength - 255
Buffer.allocUnsafe(0xFF), length - 255, byteLength -255.
Есть разница в кодировках, скорее поэтому добавили новое свойство