So technically what you're seeing is by-design, but I agree that it could be confusing to the user.
The problem is that the new item is created & bound to the data model before the click is handled. So it was going checked & then the click was unchecking it.
The reason the new row was unchecked was because it wasn't bound to a data object so it defaulted to un-checked.
It would be less confusing if the new row was checked by default so when the user clicks it & it goes unchecked, it would be expected (since it was checked prior to the click).
Here is how you can do that:
1) make a checkbox derived class that changes the default of IsChecked to true:
CheckBoxDefaultChecked : CheckBox
2) either make a new column type to use it or use a template column:
<font size="2" color="#a31515"><font size="2" color="#a31515">
</font></font><font size="2" color="#a31515">