In San Diego's low-rain climate, once a year is right — ideally before summer and after pollen season. The efficiency gain from cleaning is modest; the real benefit is keeping oxidizers and organic growth from degrading the glass over decades. Think of it like washing a car: skip it forever and the paint pays.
DIY is fine: de-ionized water, regular soap, soft brush, and never when panels are hot (thermal shock cracks glass). If your roof is steep or two stories, hire a cleaner — no efficiency gain is worth a ladder fall. Bundling cleaning with a periodic system inspection is the smart move; you're paying for the trip anyway.