What is the cost of changing the search path in postgres in a schema-per tenant model
I would say your intuition is correct. Changing the search_path causes Postgres to start from scratch with prepared statements. The manual on PREPARE:


  Also, if the value of search_path changes from one use to the next,
  the statement will be re-parsed using the new search_path. (This
  latter behavior is new as of PostgreSQL 9.3.)


And SQL statements inside PL/pgSQL functions are treated like prepared statements.

Especially while working with connection poolers (same connection stays open), it will help performance if you keep switching the search_path to a minimum.

The extra cost is not too high for simple statements, but it may be a noticeable effect for more complex queries.