devices under /dev are created by kernel using devfs and its an old technology. udev moves this function out from kernel space to user space so that device creation and name space can be handled by not just kernel. One of the benefits for doing this is to reduce the device nodes managed by system. Udev only creates devices existing in the system. The presentation of all udev created devices is under /sys which is handled by sysfs.