Out of curiosity, are you trying to tell when bullet's collide with other unit1s? Or the same Unit1 that spawned it? Not that it really matters, I'm just curious.
It is possible that the bullets are "stopped" before they have time to trigger a collision for the unit1 it collides with. If you are destroying the bullets on impact, maybe add a small timer before destroying them? If not, maybe freeze the bullets location for a second and see what happens?
A workaround you could try is calling a function from the bullet when it collides with something. Your unit1s could have a function that does all of the processing it needs to do, and have the bullet(s) call it when they collide with unit1s. It would look something like this (for your bullets):
"""
NOTE: you would have to have a variable called name in your unit1 script for this example to work!
You could use any variable though, I just chose name for an example.
"""
if (self.is_colliding()):
var other = self.get_collider()
if (other.name == "unit1"):
other.collision_function_name_here()
Then you would just have to have a collision function in your unit1s.
you could also use an Area2D instead of a kinetic body, and move the object with translate instead of move. Then you could use the collision signals for checking. Not sure how useful it would be, nor if the issue would persist, but I'm just throwing ideas around :)
I agree it's rather strange, maybe you found a bug?