Forcing postgres to use a GIN index on a varchar[]
You can use an EXCLUDE constraint to have the system automatically do the check for you.  Once in place, it will automatically throw an error if you try to insert a row that violates the constraint.  This is probably your best option.  If you first check manually and then insert the row, there could be a race condition which allows two conflicting rows to be inserted successfully.

If for some reason you really need to do the check manually, you could re-write the query to use a COUNT(*) rather than LIMIT 1, and then check to see if the count is zero or not.  

The problem is that the planner things the seq scan will find one matching row very quickly, and can then stop.  Writing the query with a COUNT(*) will force the planner to realize the true cost of the seq scan.  Alternatively, you could just drop the LIMIT 1 from the query, and on the client side have it fetch only one row and then not fetch any more.