Are you using push upgrades for your app, meaning your customers get your app changes when you want rather than when they want? (Just like we all get 3 new versions of the platform a year.)
Any gotchas with this approach?
I am a release engineer at Salesforce.org, an internal ISV - that is, we are part of Salesforce but build and deliver managed package products like any other ISV does.
We use push upgrades on a massive scale (entire customer base every two weeks). I can't quote you customer numbers, but we've been running this program for years across a very large number of subscribers.
We do use push upgrades for our managed package. I think it is crucial, especially when you use API in your package and need to remove some deprecated endpoints etc.
Also it is important for customers to stay up to date with the package version to get precise and efficient support.
Moreover, sometimes there are scripts in InstallHandler that are connected to specific version and if users upgrade package manually (skipping several versions in between) these scripts should be run manually too (it's a pain to keep track on such occasions).
Nevertheless, we have several clients, who informed us that they want to upgrade package only manually, so we omit them in push upgrades.
No gotchies so far. Even if new version can have some issues, we can push correct one right of the reel.