Based on my research, let me clarify the exact timing:
Yes, the payload is built ahead of time, but the proposer doesn't necessarily retrieve it exactly at t+0 of their slot.
- Payload building starts during slot N-1: When the block for slot N-1 is processed, an FCU with payload attributes is sent to the execution engine to start building the payload for slot N.
