Having all three (Roku Ultra 2020, ATV4K 2019, and NVidia Shield Tub 2019), if you are going to go with just one it would be the ATV4K.
Many (including me) will say that unfortunately not one of these is 100% perfect for all sources and that that is why a "triple-based device solution" is the only way to truly get optimal results for any given source, which is why I bought all three. I really didn't know about an of them, and started with the Roku (which has a simple basic GUI and a nice comfortable and tactile remote). I then decided to see what ATV4K was all about (I own NOTHING from Apple) and really don't like its touch-sensitive remote with hardly any buttons, that I'm always doing the wrong thing with. And then finally, well what-the-* I might as well try the Android-based Shield.This last one seems to have the fewest non-mainstream apps written for it, with Roku and ATV4K being "universal" for both big and small streaming sources.
I have not tried any other devices, such as Amazon products.
So for Netflix and Disney+, these are "biggies" and any device can be used. I don't subscribe to Disney+ so I can't comment on it, but I do have all the other majors (Netflix, Hulu, Prime Video, HBO Max, Showtime Anytime, ESPN+, Peacock Premium) along with numerous "minors" (only available through Roku and ATV4K).
However my own beef with Netflix on Roku (and also now on Shield with the new Experience 9 software) is that it is framerate-locked at 60hz for video, even if the source movie is 23.976/24.000. Only the ATV4K can be successfully configured to do "automatic framerate/color match for your TV" to the delivered source characteristics. I love how 24fps movies look on my LG OLED C9 presented as 24fps, which is different than how the same movie looks delivered/presented at 60fps. This is important to me (forgetting about audio), which is why I use ATV4K for Netflix (or, the LG Netflix app with audio sent to the A16 via eARC, which works fine for me and again presents 24fps movies at 24fps onscreen).
Netflix and Hulu on Roku are framerate locked to 60hz. Other sources are not, and the "automatic framerate/color match" feature on Roku actually does work properly for those other sources. Unfortunately not for Netflix and Hulu, which is unfortunate. Shield has an Android add-in named "Refresh Rate" that allows you to manually change the output refresh rate for the TV to match whatever the input source content is delivered at. This used to work perfectly before the just pushed-out Experience 9 software, which has now made Refresh Rate non-functional for Netflix. So it, too, is now apparently framerate locked to 60hz on Shield with no way to change it automatically or manually.
==> ATV4K will deliver Netflix at true framerate, and its own "automatic framerate/color match" of TV to source content DOES WORK... for all sources. So while I hate its remote, I now use ATV4K most of the time for precisely this reason. It delivers source untouched and unlocked to the TV just as it should be. And it also supports all of the other major and minor sources I subscribe to. And it plays nice with the A16 as well.