Possível solução poderia ser usar awk :
awk -F";" '{ for (i = 2; i <= NF; i++) { printf("%s;%s\n", $1, $i); } }' file
Com awk -F";" , definimos FS (separador de campo) como ; . Então, para cada linha (registro), começamos do campo 2 para o último campo ( NF ): for (i = 2; i <= NF; i++) e imprimimos o campo 1 e o campo atual ( $i ).