Faits:
A. Par jugement du 21 octobre 2008, le Tribunal correctionnel de l'arrondissement de l'Est vaudois a condamné X._ à quatre ans de privation de liberté pour vol, brigandage, dommage à la propriété, violation de domicile, contrainte sexuelle, viol et contravention à la LStup.
Par arrêt du 9 février 2009, la Cour de cassation pénale du Tribunal cantonal vaudois a ramené la peine à trois ans et demi de détention, sous déduction de 547 jours de détention préventive.
X._ a recouru auprès du Tribunal fédéral, par acte du 18 mai 2009. Par ordonnance du 8 juin 2009, le Président de la Cour de droit pénal du Tribunal fédéral a déclaré irrecevable une requête de mise en liberté; la détention préventive constituait une décision distincte du fond qui pouvait faire l'objet d'un recours propre au Tribunal fédéral, après épuisement des voies de recours cantonales.
B. Le 9 juin 2009, X._ a adressé au Président de la Cour de cassation cantonale une demande de mise en liberté.
Par décision du 12 juin 2009, ce dernier a rejeté la demande. Même si le condamné avait recouru auprès du Tribunal fédéral sur le fond, le Président demeurait compétent pour statuer sur la détention. Les faits retenus dans le jugement de condamnation puis dans l'arrêt de la Cour de cassation constituaient des charges suffisantes. Il existait un risque de fuite: l'intéressé, de nationalité marocaine, vivait en Suisse depuis 1997; il vivait séparé de son épouse et était sans domicile fixe en Suisse; il prétendait que certains membres de sa famille étaient disposés à l'accueillir en Suisse, sans toutefois en apporter la preuve. Le recourant présentait aussi un danger pour la sécurité publique. Le principe de la proportionnalité était respecté.
C. Par acte du 17 juin 2009, X._ forme un recours en matière pénale, subsidiairement un recours constitutionnel, tendant à l'annulation de l'arrêt précité et à sa mise en liberté. Il demande l'assistance judiciaire.
Le Président de la Cour de cassation renonce à présenter des observations et se réfère à son arrêt. Le Ministère public conclut à l'irrecevabilité du recours, faute d'épuisement des instances cantonales. Le recourant a présenté de nouvelles observations.

Considérant en droit:
1. Le recours en matière pénale, au sens de l'<ref-law>, est ouvert contre une décision relative au maintien en détention. Le recours constitutionnel subsidiaire est dès lors irrecevable. Le recourant a qualité pour agir au sens de l'<ref-law>; il a agi en temps utile (<ref-law>).
2. Le recours en matière pénale suppose l'épuisement préalable des voies de droit cantonales (<ref-law>).
2.1 En l'occurrence, l'arrêt attaqué mentionne la possibilité de recourir auprès de la Cour de cassation cantonale. Cela est conforme à l'art. 434 al. 2 du code de procédure pénale vaudois (CPP/VD), selon lequel les décisions du président en matière de détention préventive sont susceptibles d'un recours à la Cour de cassation dans un délai de dix jours.
2.2 Le recourant soutient qu'il serait actuellement en exécution de peine et que la décision rendue par le Président de la Cour de cassation constituerait une décision postérieure au jugement au sens des <ref-law>/VD, non sujette à recours dès lors qu'elle ne constitue pas une décision prévue par le droit fédéral (art. 420 al. 1 let. e CPP/VD). Ce point de vue ne saurait être suivi.
Lorsque le recourant saisit le Tribunal fédéral d'un recours en matière pénale contre un jugement de condamnation, son recours a effet suspensif de plein droit (<ref-law>), ce qui a pour effet d'empêcher l'exécution de la peine et de maintenir le recourant en détention préventive. Cela a été expliqué au recourant dans l'ordonnance du Président de la Cour de droit pénal du 8 juin 2009. Le recourant se trouve dès lors bien dans un régime de détention préventive, quand bien même une exécution anticipée de la peine aurait été ordonnée. Il en découle que la décision du Président de la cour cantonale pouvait faire l'objet d'un recours cantonal (cf. arrêt 1B_54/2009 du 10 mars 2009) et que le recours en matière pénale est irrecevable.
3. Le recourant a demandé l'assistance judiciaire mais, compte tenu de l'issue évidente du recours, celle-ci ne peut lui être accordée. Conformément à l'<ref-law>, les frais judiciaires sont mis à la charge du recourant.

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours en matière pénale et le recours constitutionnel subsidiaire sont irrecevables.
2. La demande d'assistance judiciaire est rejetée.
3. Les frais judiciaires, arrêtés à 500 fr., sont mis à la charge du recourant.
4. Le présent arrêt est communiqué aux parties et au Président de la Cour de cassation pénale du Tribunal cantonal vaudois.
Lausanne, le 2 juillet 2009
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le Président: Le Greffier:
Féraud Kurz