Faits:
A. Le 7 septembre 2007, A._ et B._ ont déposé une demande de permis de construire une station-service avec une boutique ("shop") ainsi qu'un parking enterré, sur la parcelle n° 1638 de la commune de Nyon. Situé au bord de la route de Divonne, en zone industrielle A, le bien-fonds d'une surface de 8853 m2 est actuellement occupé par une grande halle d'exposition de véhicules (1232 m2) et un bâtiment servant de garage et d'atelier (1321 m2). Le projet doit prendre place à l'extrémité de ce dernier bâtiment, au bord du chemin de Terre-Bonne.
Le 14 avril 2008, la Municipalité de Nyon a refusé l'autorisation. L'implantation d'un shop n'était pas conforme à l'affectation de la zone industrielle A. Le parking enterré ne respectait pas la distance aux limites. La visibilité n'était pas suffisante depuis les postes de distribution de carburant et les voies d'accès ne respectaient pas l'axe de dérivation de 45% au maximum. Les accès contrevenaient en outre à une convention tripartite entre les communes de Nyon et d'Eysin, et la société Emil Frey (convention qui ne réservait qu'à cette dernière les servitudes d'accès) ainsi qu'au plan de quartier "Le Nipy - Terre-Bonne".
B. Par arrêt du 19 janvier 2010, la Cour de droit administratif et public du Tribunal cantonal vaudois a admis le recours formé par A._ et a invité la commune de Nyon à délivrer le permis de construire. La zone industrielle comptait de nombreuses entreprises de prestations de services ou de vente. Une station-service exploitait, à quelques centaines de mètres, un shop qui, vérifications faites sur place, comptait environ 100 m2 et offrait une large palette de produits. Le chiffre d'affaires prévu pour le shop ne serait pas supérieur à celui de la vente d'essence et devait être comparé à celui du garage, dont le 75% provenait de la vente de voitures. La présence du shop était sans incidence du point de vue urbanistique. Le garage, souterrain, pouvait être implanté en limite de propriété. Le règlement communal, qui fixait des exigences en matière de visibilité et d'accès aux colonnes d'essence, avait perdu sa base légale depuis l'abrogation de la loi cantonale sur les routes. La convention passée entre A._ et les communes de Nyon et d'Eysins prévoyait le déplacement du chemin de Terre-Bonne vers le nord, mais la constructrice pourrait réaménager les accès, puisque des servitudes de passage étaient prévues. Enfin, aucun projet urbanistique ne s'opposait à la réalisation litigieuse.
C. Agissant par sa municipalité, la commune de Nyon forme un recours en matière de droit public. Elle conclut à l'annulation de l'arrêt cantonal et demande l'effet suspensif.
Le Tribunal cantonal conclut au rejet du recours. A._ conclut à l'irrecevabilité, subsidiairement au rejet du recours.

Considérant en droit:
1. Dirigé contre un arrêt rendu dans le domaine du droit public des constructions, le recours est recevable comme recours en matière de droit public conformément aux <ref-law>. Il est formé, en temps utile, contre une décision finale - la commune est invitée à délivrer le permis de construire - prise en dernière instance cantonale, le recours est ainsi recevable au regard des art. 42, 86 al. 1 let. d, 90 et 100 al. 1 LTF.
Selon l'art. 89 al. 2 let. c LTF, les communes et autres collectivités publiques ont qualité pour recourir en invoquant la violation de garanties qui leur sont reconnues par les Constitutions cantonale ou fédérale. La commune de Nyon, qui invoque l'autonomie dont elle bénéficie en matière d'aménagement local du territoire et de droit des constructions, a ainsi qualité pour agir. La question de savoir si elle est réellement autonome dans ce domaine relève du fond (<ref-ruling> consid. 4.2 p. 319, 410 consid. 1.1 p. 412 et les références).
2. Selon l'art. 50 al. 1 Cst., l'autonomie communale est garantie dans les limites fixées par le droit cantonal. Une commune bénéficie de la protection de son autonomie dans les domaines que le droit cantonal laisse en tout ou partie dans sa sphère de compétence, lui conférant par là une certaine liberté de décision. L'existence et l'étendue de l'autonomie communale dans une matière concrète sont déterminées essentiellement par la constitution et la législation cantonales (<ref-ruling> consid. 3.1 p. 131; <ref-ruling> consid. 2.1 p. 413; <ref-ruling> consid. 2a p. 8; <ref-ruling> consid. 2 p. 136 et les arrêts cités).
2.1 En droit cantonal vaudois, les communes jouissent d'une autonomie maintes fois reconnue lorsqu'elles définissent, par des plans, l'affectation de leur territoire, et lorsqu'elles appliquent le droit des constructions (art. 139 al. 1 let. d Cst./VD; cf. notamment <ref-ruling> consid. 3d p. 118 s., 363 consid. 3b p. 367; <ref-ruling> consid. 2b p. 76 s.).
2.2 Lorsqu'elle est reconnue autonome dans un domaine spécifique, une commune peut se plaindre de la violation par les autorités de recours des règles du droit fédéral, cantonal ou communal qui régissent la matière (ATF <ref-ruling> consid. 2b p. 9; <ref-ruling> consid. 2 p. 136). Le Tribunal fédéral examine librement l'interprétation du droit constitutionnel; en revanche, il vérifie l'application de règles de rang inférieur à la constitution cantonale sous l'angle restreint de l'arbitraire (art. 9 Cst.; ATF <ref-ruling> consid. 2b p. 9; <ref-ruling> consid. 8b p. 290 et la jurisprudence citée). Dans ce cas, si l'application de la loi défendue par l'autorité cantonale ne s'avère pas déraisonnable ou manifestement contraire au sens et au but de la disposition ou de la législation en cause, cette interprétation sera confirmée, même si une autre solution - éventuellement plus judicieuse - paraît possible (<ref-ruling> consid. 4.1 p. 133; <ref-ruling> consid. 5.1 p. 260 s. et les arrêts cités).
3. La commune recourante reproche à la cour cantonale d'avoir établi les faits de manière incomplète, en ne tenant pas compte de l'importante concurrence qui règne dans le domaine des "convenience shops" et du chiffre d'affaires très important généré par ce genre d'activité, qui serait de 25'000 fr./m2. L'arrêt attaqué ne tiendrait pas compte de la surface du shop projeté, soit 140 m2. Il ignorerait enfin le refus de la commune, opposé le 15 septembre 2008 à trois entreprises ne correspondant pas aux critères de la zone industrielle A, ainsi que l'ordre d'enlever un panneau publicitaire, pour la même raison.
3.1 Saisi d'un recours en matière de droit public, le Tribunal fédéral examine librement la violation du droit fédéral qui comprend les droits de nature constitutionnelle (cf. art. 95 let. a et 106 al. 1 LTF), sous réserve des exigences de motivation figurant à l'<ref-law>. Il y procède en se fondant sur les faits constatés par l'autorité précédente (cf. <ref-law>), à moins que ces faits n'aient été établis de façon manifestement inexacte ou en violation du droit au sens de l'<ref-law> (cf. <ref-law>). Si le recourant entend s'écarter des constatations de fait de l'autorité précédente (cf. <ref-law>), il doit expliquer de manière circonstanciée en quoi les conditions d'une exception prévue par l'<ref-law> seraient réalisées. A défaut, il n'est pas possible de tenir compte d'un état de fait divergent de celui qui est contenu dans l'acte attaqué. En particulier, le Tribunal fédéral n'entre pas en matière sur des critiques de type appellatoire portant sur l'état de fait ou sur l'appréciation des preuves (cf. <ref-ruling> consid. 3 p. 105; <ref-ruling> consid. 1.4 p. 254 s.; <ref-ruling> consid. 6.2 p. 288).
3.2 En l'occurrence, la commune de Nyon invoque certains faits, sans toutefois prétendre qu'elle les aurait allégués valablement devant l'instance précédente, ni que celle-ci aurait ainsi violé son droit d'être entendu. On ne voit dès lors pas en quoi les faits auraient été établis en violation du droit, au sens des art. 97 al. 1 et 95 LTF. La surface du shop ressort de la simple lecture des plans; elle est aussi rappelée dans la partie en droit de l'arrêt (consid. 1 p. 4), qui retient notamment que la surface de vente - sans les locaux de service - est d'environ 100 m2. Cette appréciation n'est d'ailleurs pas contestée par la recourante. Le chiffre d'affaires allégué par la recourante, de 25'000 fr./m2, est lui aussi dûment mentionné dans la partie en droit de l'arrêt attaqué.
La cour cantonale a également tenu compte des documents produits le 6 puis le 30 novembre 2009 par la recourante, en particulier la liste des entreprises précisant le type d'activités et l'année d'autorisation. Parmi les autres documents, elle ne mentionne qu'un refus d'autorisation concernant un café-restaurant, et non les trois autres refus dont la recourante fait état. Il ne s'agit toutefois pas d'un élément propre à changer l'issue de la cause: la cour cantonale a fondé son appréciation sur l'existence, constatée sur place, d'entreprises dont l'activité s'écarte de l'affectation de la zone. L'arrêt attaqué retient d'ailleurs que, sur la quarantaine d'entreprises mentionnées, une vingtaine avait reçu une autorisation, ce qui implique un certain nombre de refus.
Pour autant qu'il soit recevable, le grief relatif à l'établissement des faits doit donc être écarté.
4. La commune recourante se plaint ensuite d'arbitraire dans l'interprétation de l'art. 44 du règlement communal sur le plan d'extension et la police des constructions (RPE). Cette disposition définit la zone industrielle A dans les termes suivants:
Cette zone est réservée aux établissements industriels, fabriques, garages-ateliers ou industriels, ainsi qu'aux entreprises artisanales.
Des habitations de modeste importance peuvent toutefois être autorisées, si elles sont nécessitées par des raisons d'exploitation.
La recourante soutient qu'elle entend s'en tenir à une application stricte de cette disposition. En témoigneraient les divers refus d'autorisation produits devant l'instance cantonale, ainsi que les demandes de clarification adressées aux entreprises mentionnées en procédure par la constructrice. Par ailleurs, la recourante relève que le chiffre d'affaires du shop sera de 3,5 millions de fr. (soit 140 m2 à 25'000 fr./m2), soit près de 1,5 million de fr. de plus que la vente d'essence, contrairement à ce que retient la cour cantonale. La comparaison avec la station C._ serait elle aussi arbitraire car, selon une transaction judiciaire, seuls quelques articles de boulangerie pourraient y être vendus. L'arrêt attaqué serait également arbitraire dans son résultat car il viderait de sa substance la réglementation de la zone industrielle et permettrait une multiplication de ce genre de magasins.
4.1 Il y a arbitraire, prohibé par l'art. 9 Cst., lorsque la décision attaquée viole gravement une règle ou un principe juridique clair et indiscuté ou lorsqu'elle contredit d'une manière choquante le sentiment de la justice ou de l'équité. Le Tribunal fédéral ne s'écarte de la solution retenue par l'autorité cantonale de dernière instance que si elle est insoutenable ou en contradiction évidente avec la situation de fait, si elle a été adoptée sans motif objectif ou en violation d'un droit certain. Par ailleurs, il ne suffit pas que les motifs de la décision attaquée soient insoutenables, encore faut-il que celle-ci soit arbitraire dans son résultat (<ref-ruling> consid. 2 p. 61 et la jurisprudence citée), ce qu'il appartient au recourant de démontrer en vertu de l'<ref-law> (<ref-ruling> consid. 3.1 p. 265; <ref-ruling> consid. 3.1 p. 153 et la jurisprudence citée).
4.2 La cour cantonale a retenu qu'en dépit de la volonté exprimée par la recourante, la zone industrielle comprend actuellement de nombreuses entreprises sans rapport avec l'activité industrielle, soit plusieurs sociétés de prestation de services (taxis, fiduciaire, sociétés informatiques) ou de vente. La commune recourante ne conteste pas que sur la quarantaine d'entreprises mentionnées par la constructrice, une vingtaine avait été autorisée. Il n'est donc nullement arbitraire de considérer que l'autorité communale a délibérément laissé s'instaurer une certaine mixité entre entreprises industrielles et commerciales, quand bien même elle aurait récemment refusé l'implantation d'un café-restaurant, dont la non-conformité à la zone est particulièrement évidente. Les démarches que la commune dit avoir entreprises pour exiger une mise en conformité sont d'ailleurs nettement postérieures à la décision de refus du 14 avril 2008. Sur l'ensemble de ces points, la situation est comparable à celle qui a donné lieu à l'arrêt 1C_426/2007 du 8 mai 2008, concernant également une station-service avec shop dans une zone industrielle.
Il n'y a rien non plus d'insoutenable à considérer que le shop litigieux constitue un élément accessoire de l'entreprise, dont l'activité principale reste la vente de véhicules, activité dont la conformité à la zone n'a au demeurant pas été contestée par la commune. La comparaison entre les chiffres d'affaires du shop et de la vente d'essence n'est dès lors pas déterminante dans ce cadre.
La recourante conteste également en vain la comparaison avec le shop de la station C._, situé à quelques centaines de mètres. Même si celle-ci est en principe soumise, par convention, à des conditions restrictives, la cour cantonale a pu constater sur place que les surfaces de vente étaient comparables et que les produits offerts étaient en réalité bien plus nombreux que ceux mentionnés dans la convention. Sur ce point également, la commune semble ne rien avoir fait pour maintenir une exploitation conforme à l'affectation de la zone industrielle.
4.3 L'arrêt attaqué n'apparaît dès lors pas arbitraire dans ses motifs. Il ne l'est pas non plus dans son résultat car la commune pourrait adopter à l'avenir une pratique plus stricte et cohérente (comme elle a tenté tardivement de le faire au cours de la procédure cantonale), et éviter ainsi une multiplication d'entreprises n'ayant pas de caractère industriel.
5. Sur le vu de ce qui précède, le recours doit être rejeté, dans la mesure où il est recevable. Conformément à l'<ref-law>, les frais judiciaires ne sont pas mis à la charge de la commune. Celle-ci devra en revanche s'acquitter d'une indemnité de dépens allouée aux intimés (<ref-law>). Le présent arrêt rend par ailleurs sans objet la demande d'effet suspensif.

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté, dans la mesure où il est recevable.
2. Une indemnité de dépens de 2000 fr. est allouée à l'intimée A._, à la charge de la recourante.
3. Il n'est pas perçu de frais judiciaires.
4. Le présent arrêt est communiqué aux mandataires des parties et au Tribunal cantonal du canton de Vaud, Cour de droit administratif et public.
Lausanne, le 21 juin 2010
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président: Le Greffier:
Féraud Kurz