Faits: A. Par décision du 5 décembre 2008, confirmée sur opposition le 4 février 2009, le Service public de l'emploi du canton de Fribourg (SPE) a suspendu pour une durée de 21 jours le droit à l'indemnité de chômage de B._, né en 1969, lequel était au bénéfice d'un délai-cadre d'indemnisation du 7 avril 2008 au 6 avril 2010. Il lui était reproché une faute moyennement grave pour refus de participer à un programme d'emploi temporaire auprès de l'association X._, spécialisée dans le recyclage. Cet emploi avait été assigné le 14 mai 2008 et aurait dû débuter le 2 juin suivant. B. Saisie d'un recours de l'assuré qui demandait l'annulation de la suspension du droit à l'indemnité, la Cour des assurances sociales du Tribunal cantonal du canton de Fribourg a modifié la décision attaquée en ce sens que la durée de la suspension a été réduite à 7 jours (jugement du 8 juillet 2011). C. Le SPE forme un recours en matière de droit public contre ce jugement dont il demande l'annulation, en concluant principalement à la confirmation de sa décision sur opposition du 4 février 2009, subsidiairement au renvoi de la cause à la juridiction cantonale pour nouveau jugement dans le sens des considérants. L'intimé conclut au rejet du recours dans la mesure où il est recevable, tandis que la juridiction cantonale et le Secrétariat d'État à l'économie (SECO) ont renoncé à se déterminer.