I'd like keep an ATMEL ATMega328P in reset for about 4 sec while the rest of the board self checks on startup. Is this OK? Are there any issues that would make holding the RESET low for this extended period of time a bad thing to do? I could alternatively turn the power off, but it would be much much easier to just hold reset low, since that can be done with a logic gate.
nRESET only has a minimum low width specified; it can be held low for longer than that, and routinely is during ISP. The output ports are tristated, but the pins used for ISP (MOSI, MISO, SCLK, and XTAL1) remain active for the purpose of programming the device and so should be gated separately if the design so requires.
Also note that nRESET may be pulled as high as 12V if parallel programming is allowed or required, and any gating will need to accommodate that as well as the other pins used for parallel programming.
Like most microcontroller datasheets only the minimum reset time (2.5uS for that part) is mentioned and no maximum. The datasheet doesn't explicitly mention long reset times but I can't think of any possible issues. Device programmers often hold the device in reset for an extended time during and after programming.
Having said that normally I'd just use an I/O line to pause the firmware starting up until the rest of the system is ready unless you have other reasons to generate a seperate reset, such as a slowly rising power supply.