For FOSS projects, everything gets easier once you get it accepted in the package repositories, and if your project is popular enough, you can usually get someone else to do it for you.
In both cases, using a language that has a cross platform dependency manager eliminates a huge number of compatibility problems. Also, keeping libraries reasonably up to date also helps prevent problems from happening. Updating every two years should be sufficient to maintain compatibility with most Linux distributions.
Also, software vendors don't have to worry about every Linux distribution, just pick the top one or two and let users support the rest for you.
Open source is a million times easier. Your source is available. It's up to the distro's maintainer of your package to deal with compiling and binary compatibility.
That's bullshit though. Why would you trust some random community maintainer to get between you and the user? Now when shit goes wrong there's one more person in the loop of blame to deal with. There are famous incidents of maintainers introducing problems to otherwise correct software, and ignoring the developer.
"I am constantly getting email from users reporting bugs that have been fixed for literally years who have no idea that the software they are running is years out of date." -jwz
How is this considered a sane way to distribute software!?
If you're using any engine even better, all of the major ones are cross-platform anyway and abstract all the nastiness away.
[0] And frankly it is only slightly easier if you write FOSS software.