Hi @Geoff Lee,
I tested your scenario. As you mentioned, I was able to communicate between two spoke VNets even though they are not peered with each other. This two vnets are peered with the hub vnet only.
This my Topology
I deployed two VMs in the two spoke VNets. See this screenshot; they are communicating with each other.
See this traffic is going like this:
spoke01vnet----->VPN Gateway------>spoke02vnet
I configured the NGS rule to block this communication.
Hope the above answer helps! Please let us know do you have any further queries.
Please do consider to “up-vote” wherever the information provided helps you, this can be beneficial to other community members.