Yes this is correct behaviour. In the case of EBGP as you have mentioned, the connection is sourced from the address of the egress interface, so it triggers the self-traffic policy.
In the case of IBGP, the traffic is sourced from the IP address of the lo0.0 interface, but egresses via your reth interface - whenever traffic crosses two interfaces you need a policy.
If it helps, consider the case whereby the loopback interface is in a different zone - you would need a policy.