Boost program options не подходит, т.к. он не умеет писать INI-файлы обратно, только парсить.
Boost property tree подробно не смотрел, но в доках не нашёл утверждений о том, что он умеет сохранять комментарии.
P.S.
Что такое сохранение комментариев и как должно быть реализовано?
1. Прочитал INI в некий объект. Комментарии застряли там.
2. Поменял объект (изменил/добавил переменные/секции).
3. Сказал объекту сохраниться в файл. Комментарии остались на прежних местах, добавилось всё добавленное, поменялось всё изменённое.