The issue is that when we move a task (10 days and 10 hours) around and there is a non working day in the new period where the task will be running, then it means that you should only use for instance 9 days and the same amount of hours. When you move the task ones again to a period without non working time it still thinks that you use 10 days and 10 hours on the task, but it will not split hours equally. We have found that some of the days will have more hours and then some other days will have less hours.
Maybe not a solution, but a little more info to why this is occurring. Regardless of Task Type (Fixed Duration, Fixed Work, Fixed Units), when you create a task the task will calculate Duration against the Working Time Calendar (or resource or task calendar!). It will then exclude non working days from the working days just like it does for weekends (ie your 10 Day task actually runs for 14 or 12 elapsed days depending on whether it crosses one or two weekends). The easiest way to update the task to achieve what you have asked would be to 1) Set the Task Type to Fixed work 2) Move the task to when the task needs to occur and if you need to, change the Duration Project will then (by default) update the effort per day pro-rata to allow the work to be done in a shorter time period. The dispropotionate split of hours in a task may be because the task has some actuals assigned to it (ie if you mark a task 9 day 50% complete then change it to a 10 day task it would only reduce the work required per day to days where work has not been done.