Hi,
That depends on exactly how you need/want to block the access and possibly your preference. Some ways of blocking access are not possible using NSG, so of course in one of those cases you would need to use Firewall.
For example, say you wanted to block HTTP/S access to a list of 50 different FQDNs (*.domain1.com, *.domain2.com, etc.). In this case you would use Azure Firewall since NSG doesn't allow you to block at the Application Layer.
On the other hand, say you wanted to block outgoing port 25 (SMTP). You could do this using NSG, or via Azure Firewall, or both. My preference (in this example) would be to block it via NSG so that Azure Firewall doesn't need to process the traffic.
One thing to know is Azure Firewall can essentially do everything NSG can, plus more. Assuming all Internet traffic is flowing through Azure Firewall you could have it do all blocking if you wanted to.
Please click Accept Answer if the above was helpful
Thanks.
-TP