RETI holt sich die Adresse vom Stack, von wo aus deine Funktion angesprungen wurde, und springt zu dieser Addresse Zurück. RJMP ist einfach nur ein Sprungbefehl, d.h. es wird keine Addresse mehr auf den Stack gepusht sondern der Program-Counter wird einfach auf einen neuen Wert gesetzt. So entsteht der Fehler beim Reti nach dem Sprung auf Reset. Auf dem Stack steht überhaupt keine Addresse, wo hingesprungen werden kann.