Does it see the advertisements from the primary before you add the VIP?
Does the primary see those advertisements from the secondary?
It is not generally correct to add a CARP VIP to the secondary. You add it to the primary and it XMLRPC syncs over to the secondary with the proper advbase/advskew.
If you add it to the secondary manually and there is not a 1/0 skew VIP already on the network, of course it will assume MASTER.
Tested what you reported on a fairly-current 2.4-BETA VM pair:
Added VIP 172.25.236.65 on Secondary only:
xn0: flags=8943 <up,broadcast,running,promisc,simplex,multicast>metric 0 mtu 1500
options=3 <rxcsum,txcsum>ether 12:77:26:96:5d:a3
inet6 fe80::1077:26ff:fe96:5da3%xn0 prefixlen 64 scopeid 0x5
inet6 2001:470:f00e:7e01::3 prefixlen 64
inet6 2001:470:f00e:7e01::1 prefixlen 64 vhid 239
inet 172.25.236.3 netmask 0xffffff00 broadcast 172.25.236.255
inet 172.25.236.1 netmask 0xffffff00 broadcast 172.25.236.255 vhid 236
inet 172.25.236.65 netmask 0xffffff00 broadcast 172.25.236.255 vhid 241
nd6 options=21 <performnud,auto_linklocal>media: Ethernet manual
status: active
carp: BACKUP vhid 236 advbase 1 advskew 100
carp: BACKUP vhid 239 advbase 1 advskew 100
carp: MASTER vhid 241 advbase 1 advskew 100
Deleted same:
xn0: flags=8943 <up,broadcast,running,promisc,simplex,multicast>metric 0 mtu 1500
options=3 <rxcsum,txcsum>ether 12:77:26:96:5d:a3
inet6 fe80::1077:26ff:fe96:5da3%xn0 prefixlen 64 scopeid 0x5
inet6 2001:470:f00e:7e01::3 prefixlen 64
inet6 2001:470:f00e:7e01::1 prefixlen 64 vhid 239
inet 172.25.236.3 netmask 0xffffff00 broadcast 172.25.236.255
inet 172.25.236.1 netmask 0xffffff00 broadcast 172.25.236.255 vhid 236
nd6 options=21 <performnud,auto_linklocal>media: Ethernet manual
status: active
carp: BACKUP vhid 236 advbase 1 advskew 100
carp: BACKUP vhid 239 advbase 1 advskew 100</performnud,auto_linklocal></rxcsum,txcsum></up,broadcast,running,promisc,simplex,multicast></performnud,auto_linklocal></rxcsum,txcsum></up,broadcast,running,promisc,simplex,multicast>