Faits: A. B._ a travaillé du 2 août 1986 au 31 décembre 2007 en qualité de directeur-administrateur de la société S._, ayant pour but des opérations commerciales, de la représentation et du courtage. Depuis le 14 juin 2005, il était inscrit au registre du commerce comme administrateur, avec signature individuelle. Il a été licencié le 26 septembre 2007 pour le 31 décembre suivant au motif que la société cessait ses activités pour raisons économiques. Il est néanmoins resté inscrit au registre du commerce, comme administrateur unique depuis le 2 janvier 2008. Selon une décision de l'assemblée générale des actionnaires de la société S._ du 23 novembre 2007, son mandat d'administrateur avait été renouvelé pour 2008, sans honoraires, jusqu'à l'extinction de toutes les opérations en cours, tant sur le plan commercial que comptable, et jusqu'à la fin du contrôle en matière de blanchiment d'argent. B._ a déposé une demande d'indemnités journalières de chômage dès le 1er février 2008. Par décision du 11 mars 2008, la Caisse cantonale genevoise de chômage (ci-après : la caisse) a rejeté cette demande au motif qu'il se trouvait dans une position analogue à celle d'un employeur et que sa perte de travail n'était pas contrôlable. Le 13 mars 2008, l'assuré s'est opposé à cette décision. Il a précisé qu'il ne consacrait à la société S._ que le temps nécessaire à la clôture des comptes au 31 décembre 2007 et à la préparation d'une dernière révision en matière de blanchiment d'argent. Ces activités - non rétribuées - ne lui prenaient que quelques heures par semaine et ne l'empêchaient pas de rechercher ni d'accepter une nouvel emploi. Une fois ces opérations terminées, il démissionnerait et remettrait ses actions aux autres actionnaires. Il précisait que la société S._ cessait son activité faute de clientèle; elle se mettait donc «en sommeil» et son avenir relèverait des associés restant. Le 25 mars suivant, l'assuré a transmis à la caisse le procès-verbal de l'assemblée générale des actionnaires de la société S._ du 18 mars 2008. Il en ressortait que l'assemblée avait accepté sa démission du poste d'administrateur et avait désigné M._ comme successeur. Une feuille de présence des actionnaires était jointe au courrier, dont il ressort que l'assuré possédait 80 actions et le nouvel administrateur 60, sur un total de 200. L'inscription de B._ au registre du commerce, comme administrateur de la société S._, a été radiée le 18 avril 2008. Les 20 mai et 2 juin 2008, l'assuré a exposé à la caisse qu'il éprouvait des difficultés pour remettre ses actions aux autres actionnaires de la société S._, qui ne disposaient pas de liquidités suffisantes. En outre, la société n'exerçait plus d'activité et n'avait donc pas dégagé de profit pendant l'année 2008. Par décision sur opposition du 6 juin 2008, la caisse a maintenu son refus d'allouer les indemnités journalières demandées par B._. Elle a considéré que sa participation de 40 % au capital social de la société S._ le maintenait dans une position analogue à celle d'un employeur. B. B._ a déféré la cause au Tribunal des assurances sociales du canton de Genève. Lors d'une audience du 29 septembre 2008, il a expliqué avoir reçu un salaire de la société S._ pour les mois de janvier à mars 2008, sans toutefois exercer une activité particulière pour la société. Il était encore actionnaire, à raison de 40 %, aux côtés de deux autres actionnaires. La dissolution de la société prendrait encore une année environ, en raison des appels aux créanciers. Il ne remettait plus à l'assurance-chômage la liste de ses recherches d'emploi, depuis mars 2008, car il estimait ne pas avoir de comptes à rendre à l'administration, dès lors que celle-ci ne le reconnaissait pas comme demandeur d'emploi. Enfin, il n'avait pas annoncé le salaire perçu de janvier à mars 2008 car il n'était pas prévu, au moment de son inscription au chômage, qu'il soit encore indemnisé pour 2008. Par jugement du 10 novembre 2008, la juridiction cantonale a nié le droit de B._ à des indemnités de chômage pour la période courant jusqu'au 1er avril 2008; elle a renvoyé la cause à la caisse pour qu'elle statue à nouveau sur le droit aux prestations pour la période courant dès cette date. Le Tribunal des assurances sociales du canton de Genève a constaté que pour cette seconde période, l'assuré ne se trouvait pas dans une position assimilable à celle d'un employeur. C. La caisse interjette un recours en matière de droit public contre ce jugement, dont elle demande l'annulation. Elle demande l'octroi de l'effet suspensif au recours. L'intimé conclut au rejet du recours; il demande également au Tribunal fédéral de constater son droit à des indemnités de chômage pour la période courant dès le 1er avril 2008. Le Secrétariat d'Etat à l'économie a renoncé à se déterminer. 