When creating a constraint from table A to table B, the table name and column name in information_schema.constraint_column_usage shows table B. That makes impossible to check whether a constraint exists as we can have a constraint from table C to B and they will have same value in information_schema.constraint_column_usage.
Going from memory here but I believe what you are seeing is a consequence of not following the SQL standard for naming things and then using an SQL standard view to inspect the meta-data. This is one of the few cases where the flexibility we provide above-and-beyond the SQL standard renders using one of its features problematic. You will either need to standardize your naming or use the pg_catalog.