Я использовал оба (для одного и того же проекта): Boost лучше интегрирован с STL, и особенно с исключениями C ++. Кроме того, его механизм управления памятью (который пытается соединить управление памятью в C ++ и Python GC) гораздо более гибок, чем SWIG. Тем не менее, SWIG имеет намного лучшую документацию, никаких внешних зависимостей, и если вы обернули библиотеку в SWIG для Python, вы более чем на полпути к получению оболочки Java / Perl / Ruby.
Не думаю, что есть четкий выбор: для небольших проектов я бы снова выбрал Boost.Python, для более крупных и долгоживущих проектов дополнительные инвестиции в SWIG того стоят.