Originally BGP neighbors could only be identified by IP addresses. Then FRR added support for interface names as neighbor identifiers and we made it set ... neighbor <ip|interface> to mirror the FRR syntax.
However, that makes validation considerably more complex and the error message more confusing.
We should likely make that syntax analogous to what we did for IPsec and VRRP already: the name should be purely informational, and the identified should be inside, like ǹeighbor <name> [address <IP> | interface <intf-name> ]´.