What you've described should work properly. We do exactly this in several of our demo apps.
Are your event types (ProgrammesEdited and OffersUpdated) annotated with @Portable?
Hmmm nope, I'll just add that. Do I have to add default-no-args constructor too.
That's up to you, as long as you follow the Errai Marshalling rules. Errai Marshalling supports objects with and without default constructors.