Based on your question, I’m making an assumption that you resource level your schedule. With that in mind, leveling is extremely complicated and while there are many factors that could be contributing to your results, here are the initial two that jump to mind.
* You mention that you enter new start dates. When a task start date is manually entered by the PM, Project adds a manual date constraint on the task without telling you. For example, Must start on 4/1/2019. These are visible in the task information window in the Advanced tab. When a manual constraint is entered, Project will generally honor that constraint during the resource leveling process. I say generally because there are scenarios where Project will change it. This is one factor that could result in over allocations.
* Depending on the leveling resolution options you’ve selected, Project may or may not move remaining work on started tasks. For example, if a 10 hour task had 2 actual hours applied 2 weeks early, the remaining 8 hours of work may be scheduled to be completed about 2 weeks later based on the task predecessor/successor relationships. However, the remaining work may be scheduled to start on the next available work date disregarding dependency relationships. Leveling options control how this functions. If these options are set incorrect, resource leveling will leave over allocated resources and confusing leveling results.
Since this is too complicated to explain in this reply, I’m going to suggest the following MPUG article.
This article is part of a larger series of resource leveling articles. The linked article is focused specifically on the split task schedule options. All articles in the series along with the companion webinars are linked in the article itself if you wish to dive deeper.
I hope my initial thoughts point you in the right direction and the article links help.