Could we remove the requirement that --single must be first? I'm not thrilled about adding a list of "must be first" options that needs to stay updated, but given this list probably doesn't change too frequently, maybe that's still better than a more invasive patch to allow specifying these options in any order...
It would be nice, and I briefly looked into removing the "first" requirement, but src/backend/tcop/postgres.c for one assumes that --single is always argv[1], and it seemed not worth the extra effort to make it work for argv[N] instead of argv[1]. I don't mind it being the first argument, but that confusing error message needs to go.