USB problems with AT90USB646
This chip uses full-speed USB mode. In this mode there is absolutely no reason to split hairs about 90-Ohm differential impedance, especially on traces that are few mm long. Any trace will work just fine. And cables will make no difference.

Since the device initially connects (half-way maybe) and descriptors were read by the host, it likely means that the device system frequency is out of whack. Initial control transfers use relatively short packets, so, even if the USB frequency is off by several percent, the GET_DESCRIPTOR will be fine. However, longer packets might run out of host receiver flexibility. Fix your clock, and everything will be fine.

BTW, the ground wire at the connector is unreasonably skinny.