Acabei indo com a sugestão do @ dangph.
Param([string]$Script, [string]$ScriptParams)
$WorkingDirectoryTempFile = [IO.Path]::GetTempFileName()
cmd /c " '"$Script'" $ScriptParams && cd > '"$WorkingDirectoryTempFile'" "
Get-Content $WorkingDirectoryTempFile | Set-Location
Remove-Item $WorkingDirectoryTempFile
Como um aparte, Lee Holmes escreveu um script que resolve basicamente o mesmo problema em 2006: