Необходимость SGID на несколько групп сразу делает несовместимым использование в одном процессне нескольких функциональностей, где права доступа выстроены подобным образом. Т.е. при появлении новых библиотек с подобным поведением вероятность их невозможности использования в пределах одного процесса возрастает хуже, чем линейно. Идея, как это решить -- придумать, как отказаться от SGID в программе. Например, перенести список допустимых приложений в конфигурационные файлы. Возможно, сделать ещё один wrapper(sgid) сверху, который будет отшивать ненужных и запускать уже непосредственно helper, который будет сначала проверять, что его запустил именно wrapper.