Odd behaviour bounce

Normalize make the length of a vector between 0 and 1.
It is not the normal to a vector which mathematically would be a plane.
Usually, you need the normal to the surface to use reflect.
You have to know the normal of the plane where the collisions occur