Isso acabou sendo um erro do usuário. Eu estava anexando o VHD à VM usando o seguinte comando:
$vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption Attach -Windows
Eu deveria estar usando o seguinte comando:
vm = Set-AzureRmVMOSDisk -VM $vm -Name $osDiskName -VhdUri $osDiskUri -CreateOption fromImage -SourceImageUri $urlOfUploadedImageVhd -Windows
A principal diferença é que o primeiro comando simplesmente anexa um VHD à VM recém-criada, enquanto o segundo usa o VHD carregado como modelo para o novo VHD.
O comando incorreto não anexa o arquivo unattend.xml à VM, apenas o segundo, portanto, o sistema nunca passou da janela OOBE no processo de inicialização.
Eu recebi as informações corretas sobre como anexar a VM aqui .