The issue is that the vendor wants a single public IP and host IP and won't accept a range of IPs.
To establish the site-to-site VPN, the on-premises VPN device needs to allow the inbound traffic from the public IP address of the Azure VPN gateway.
When he S2S VPN is established, VMs on the VNET communicate with the on-premises computers through their private IP addresses. The public IP addresses of these VMs are only used to access the internet.
Is this the normal behavior or do I have to apply some more configuration?
Normally, we won't NAT a subnet if there is no necessary reason to do this. S2S VPN is used to connect subnets which are separated by internet, so that all computers on these subnets can communicate with each other just like they are connected directly.
===========================================================================
Update:
As I have mentioned in the comment below, the public IP address is transparent when the computers communicate through the VPN. The computer on the local network is only able to see the private IP address of the source computer.
VPN works as a bridge across the internet which connects subnets separated by internet. When the VPN has been established, you can think of these subnets as being connected directly.
So, the answer to your question is quite simple, use NAT.
You can build a VM on Azure to perform NAT. So that the source IP address of every outbound packet from these VMs will be changed to private IP address of the NAT VM.