I don't worry too much about children working at different speeds. I don't start them on new projects together, I let them work at their own pace. If you have children racing ahead and finishing all the challenges that's great. But I would suggest for those that perhaps the projects are too easy for them and they should skip ahead onto something harder.
I would encourage the children to complete the projects they are working on if they are struggling. Skipping a project because it's too easy is fine. But skipping one because it's too hard might send the wrong signals.
Children that don't want to do the projects is something we struggle with at our club. Again there could be two reasons for this: they find the projects too easy, or they find the projects to challenging. YouTube and other online games are a massive distraction and in the library environment, where we run our club, we don't have any access control. Our approach is to engage with children that want to explore their own programming projects and ignore those that just want to play games or watch videos.
One thing we have started to do is to get the children to show their parents what they've been working on went the club finishes. This helps motivate some of the children as if they haven't done anything, they've got nothing to show.
I don't know if something like that might work in a class environment by getting children to display their work to each other?