The Data Guard gaps query only needs to be executed on the primary database and the associated alarm should then be fired on the primary database and not on the standby.
The reason that we also execute it on the standby database is because some of our customers are using a cascaded data guard configuration so the standby database also sends redo to other (additional) standby database, therefore we also monitor the standby database in order to detect gap between the standby database to the cascaded standby.
In this particular environment the logical standby database had two false standby archive destinations that caused false alarms.