I vote for #3, jumper block. Even if the user doesn't end up needing a complex web based side of things, there is still the option should you choose. Seems to be the simplest(codewise) way to go. I would love for #1, but I can see issues for those who want complex logging servers or remote control. Option #2 would work, but then there could be unnecessary communication between AVRs when all would fit on one chip for a good number of users, plus I believe the jumper option would probably be the easiest change to the board without risking another problem. That's my opinion on it anyway, but again, I have not fully explored AVR communication other than communication in general could get tricky for some people.
The way I see it now the likely functions of the board are going to be: Time, Display, pH, Timed Relays, Temperature, Ethernet, and probably either IR Remote or Keypad
Time, Display, pH, and Remote/Keypad are probably best on the main AVR.
Temperature, Ethernet and Remote/Keypad are the options. Remote/Keypad are probably best on the main AVR. Then you have Temperature and Ethernet, which Temp could easily be on either. Like you said though, I think the big limiting factor is going to be sketch size, which ethernet could easily cause a problem.
Also, on the port expanders. Can more than one MCP23008 be on the same SCL/SDA pins of one AVR?
FishMan: As it stands the second AVR is doing nothing. For the average user I think it would be best to avoid as much cross-communication as possible.
You would use the ethernet in the simplest way to display information such as pH, temp, etc... while you are away from the house. You wouldn't need a server or computer on this way. The Hydra will be connected to a port directly on your router.
As for programming the AVR's, there is no FT232 chip onboard. You would need either a USB cable with the FT232 chip built in and configure your own pin header plug, or buy a USB-BUB(or similar) from modern devices. You can plug it into either FTDI row for each chip via a standard USB->USB-Mini Cable.
If we were to add the jumpers for the ENC, for my requirements I would set it up as follows:
Main AVR: Time, Temperature, pH, Timed Relays, IR Remote
Secondary AVR: Get variables from main AVR and send to my remote server for display/recording(or just display the page from the ENC). In my case of sending variables to a dedicated server, this could drop the ethernet code size allowing a single AVR as well.