MySQL zawsze rezerwuje maksymalną kwotę dla UTF8 pole, które ma 4 bajty, więc z 255 + 255 za pomocą DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; przekroczyłeś maksymalny limit 767 długości klucza.
Możesz zmniejszyć tylko pojedynczą długość varchara lub nie używać klucza złożonego.