Yes, utility classes are a good idea but, as with all object-oriented programming, you should be aiming for maximum cohesion, minimal coupling.
Maximum cohesion means that everything in a single class should be heavily related to each other. Minimal coupling means there should be no unnecessary dependencies between classes.
In other words, lumping together compression with image manipulation or the launching external processes in a single class is a bad idea. By all means have a compression utility class and an image manipulation utility class but don't put them together.
Doing so is akin to using the singleton pattern as a God object, a ghetto where you just dump all your rubbish that should be better organised. I would say it's okay to use an uber-utility class during development but make sure your code is better organised before shipping. Maintenance will be a lot easier.
Is it a good practice?
No, not in the long term although it's useful when done temporarily.
Will things grow unmanageable when the number of functions grow larger and larger?
Yes, no question about it.