This is by design. The first event is always defined by its start and end. The subsequent occurrences are following the recurrence rule.
This is how it works internally. However, you should be able to adjust the start/end of the first event in the code after the event is created by the user so it behaves like you describe.