They work because they implement one of the standard protocols. HID, VCOM, Mass Storage, etc. for which Linux provides standard drivers. These will nearly always work. Custom protocols? Not a chance!
USBasp, STlink, various JTAG dongles, Saleae logic analyzer, my Rigol scope and one of those cheap Chinese signal generators are just what I have at arm's reach - and pretty much all of them implement custom protocols (aka not HID or CDC or something similar) and every single device works. So what are you talking about?
Yes, if you have an obscure gadget that nobody has made a driver for (or more likely didn't create any application support for) , sure that won't work. But those things are fairly rare and becoming rarer.
An engineer might discover udev rules if they researched Google long enough. First, what if the user is a machinist, highly skilled in a different field? Second, why should they have to?
They shouldn't - and in most cases they don't have to. A machinist is unlikely to be plugging in anything more sophisticated than an USB stick or a common serial port emulating dongle/controller card. I have yet to see one that doesn't use a standard USB to UART bridge. And those all work without you having to do anything.
On the other hand just look at Dave swearing up a storm each time he has to get a programmer or something else work in Windows. Yes, you don't have to deal with device permissions (which is a solvable issue) but you may have to deal with unsupported OS versions, unsigned drivers (if you can find them in the first place) and general wonkiness of the Windows USB subsystem that detects a peripheral one time out of three insertions and similar issues. But it is always the Linux that is "hard to use".
I get annoyed with Linux when I can't even use MiniTerm without messing around adding myself to some arcane modem group. How in the world is a new user going to discover this? Google? Well, sure, eventually... If they don't just give up and move to printers. Wait! Same problem! In fact it's even worse if you forget which port the web interface of CUPS is using on localhost.
It is very interesting that the last time I had to do something like that has been maybe 10 years ago. And I am using both serial ports and printers pretty much every day. Perhaps blame idiots who have built your distribution? (or upgrade to something actually recent - like built in the last 5+ years). Pretty much every modern distro will grant permissions for common USB devices such as serial port dongles, USB sticks or printers to the "console" user (i.e. the user sitting at the physical keyboard, not one connected remotely) when they are connected automatically, without you having to configure anything.
The same for CUPS - your system doesn't have a normal printer management tool (aka CUPS frontend) that you have to resort to the web interface? This is how e.g. Ubuntu does it:
https://help.ubuntu.com/stable/ubuntu-help/printing-setup.html
People get to make a choice and only 1% or so choose Linux. There are a whole lot of reasons. But in summary, Linux is a hard thing to get working. Oh, sure, the desktop will play but, if you choose Ubuntu (probably the most popular distro), the system buttons will be on the wrong side of the window due to the shear arrogance of the developer.
...
ETA: Ubuntu can use various desktops. It is the Unity desktop that has the odd button location.
I am not going to argue whether or not Linux is hard to get working or whether or not someone should use it. However it would help if people at least didn't spread patent untruths or stuff "that everyone knows" about it which were maybe valid last time a decade ago.
Yes, you can hit up Google and find a way to fix it but why should you have to? Yes, I have Ubuntu on one machine but I'm using Debian on the other 2. I will eventually get out of the Ubuntu business altogether.
I think here is your problem. I have nothing against Debian, having used it myself on many occasions. However Debian doesn't exactly make the life easy for a desktop user because it doesn't preconfigure almost anything for you. I certainly wouldn't suggest Debian to a non-expert user. I guess you had your reasons why did you choose it but then that is pretty much the case of a self-inflicted wound. And then you are declaring "Linux sucks!" because of your bad experience. How is that fault of Linux in general?
Try an actual desktop distribution - Suse, CentOS, Mageia or even one of the many Ubuntu derivatives that don't use Unity (I do hate that desktop with passion too) and you will be surprised that things will suddenly work and that it is often MUCH easier to get various hardware working in Linux than it is in Windows these days.
Case in the point - had to make a Nonin pulse-oximeter device (one of these:
http://www.nonin.com/buynonin/noninconnect ) connect to our application recently. That's about as non-standard and obscure hardware as it gets. The device uses Bluetooth Low Energy and broadcasts the pulse and blood oxygenation value when you wear it on your finger. They are meant to be used with Android phones/tablets, the vendor doesn't even provide desktop tooling for it.
In Windows you literally
can't make this to work, because BLE is supported only in Windows 10 and then only with the device paired. Which the Nonin gizmo does not support (it has no provision for pairing). The non-paired mode "will be supported in a future Windows 10 update". Yay.
So I took a Raspberry Pi 3 with the built-in Bluetooth, installed an open source package for Node.js to talk to the oximeter over BLE that someone has made already and had everything working and talking to our application in a few hours, including writing the necessary network code to send the data over. Saving the demo for our client.
Anybody using Linux will get a bunch of Frequent User Points with Google. Google will be their new best friend!
I guess you haven't used Windows or Mac then and needed to fix a problem or install a recalcitrant device/software. I am using both Windows & Linux and have been exposed to Macs too and you can't really do without Google with neither of them. So I am not sure what your point is.