Should go managed when:
- You need to uninstall solutions
- You want your solutions on marketplace
- You are shipping repeatable solutions
- You are maintaining integration components
And there are some limitation with managed:
- Can't overwrite unmanaged changes
- Less predictability in end result because of solutions layering and existing unmanaged customization
- Solution dependencies
- Can't return to unmanaged state
- Inability to fix small issues easily
- Challenges for deleting components