Just wanted to add my experience with both Azure Cli and Az PowerShell.
As per 2019, both are cross-platform so it should only be a language/syntax preference but with Azure Cli all/most commands are idempotent.
I've ended up replacing all my ARM Templates with Azure Cli scripts as it is less verbose and easy to read.
With Az Powershell, you still need to check if the resource exists before creating it otherwise it will throw an exception so scripts can become very complicated for no reason.
We're using both Azure Cli and Az Powershell with Azure DevOps. Azure Cli command can now be executed from bash (Linux) or bat (Windows) scripts. So it is not optimum... (EDIT 2020 You can now run Azure CLI using Powershell scripts as well)
- We deploy resources with Azure Cli because it is easy to read and commands are idempotent.
- For complex scripting I prefer using PowerShell as there are a lot of useful language features.
EDIT 2021
With the new Azure Bicep, I've started going back to "ARM type" deployment: Bicep is really easy to use if you understand ARM template and stay readable even with complex deployments.
In addition to Az CLI (Powershell core) it handles most of the scripting i need to do.