Foreign key for array column
As you simply cannot create a foreign key against an array column, you should store the experiments in the proper relational way.  This is what you mention as a junction table.  

It is a table like the following:

CREATE TABLE experiments (
    method_id integer REFERENCES methods (method_id),
    method_class_id integer REFERENCES method_class (method_class_id)
);


Here you will have one row per method-class pair (which, in turn, may mean several trials, based on your comments above), instead of just one per trial as in your current design.  This means a slight storage overhead, but it gives you the flexibility - queries will use proper joins which can be supported by indexes, for example.  Also, removing methods from a class will be much easier.

Note: I suppose above that you have a method_class table, too.