Yes this is normal, when a new cocos2d::Scene is made active by the Director it's cleanup() method is called, which unschedules all functions associated with it.
You shouldn't really be scheduling an update in init() as the scene will begin updating before it becomes active.
onEnter() is the correct place, and you should unschedule the update in onExit(). When a Scene becomes active the Director calls it's onEnter(), and subsequently onExit() when the scene becomes inactive.
Another solution/approach would be to always destroy your scenes when you switch. Building a new second scene each time will call scheduleUpdate() each time. This is usually recommended in most cases anyway as it minimises memory overhead.
Hope this helps