Why does last data of I2C DMA transfer break?
Your DMA Handler gets called before the last byte is sent, as this is the point in time when the DMA buffer turns empty. It has just been written into the peripherial register.

You need to wait for this byte to be out on the bus - using the I2C interrupt handler for example.