Non è possibile, e potrebbe non essere mai possibile, assegnare una chiave esterna a una proprietà json. Sarebbe un cambiamento importante e piuttosto complicato all'applicazione della chiave esterna di PostgreSQL. Non credo sia impossibile da fare, ma affronterebbe problemi simili a quelli riscontrati dalla patch chiavi esterne per array.
Con 9.4 sarà possibile trasformare un intero oggetto json in una chiave esterna come jsonb
supporta i test di uguaglianza. Nella 9.3 non puoi nemmeno farlo.