I have gone through the official Azure CLI and Azure PowerShell APIM reference and as you said, they not provide a way to set a certificate reference from keyVault. But I think we can export .pfx from keyVault and import it to APIM as a workaround. Just Try the PS command :
$apimName = ""
$apimSresourceGroup = ""
$keyVaultName = ""
$certName = ""
$password = ""
#export pfx
$cert = Get-AzKeyVaultCertificate -VaultName $keyVaultName -Name $certName
$secret = Get-AzKeyVaultSecret -VaultName $keyVaultName -Name $cert.Name
$secretByte = [Convert]::FromBase64String($secret.SecretValueText)
$x509Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($secretByte, "", "Exportable,PersistKeySet")
$type = [System.Security.Cryptography.X509Certificates.X509ContentType]::Pfx
$pfxFileByte = $x509Cert.Export($type, $password)
#import to APIM
$apim_context = New-AzApiManagementContext -ResourceGroupName $apimSresourceGroup -ServiceName $apimName
New-AzApiManagementCertificate -Context $apim_context -CertificateId 'testcert' -PfxBytes $pfxFileByte -PfxPassword $password
Result: