Inline компилирует код C в то же время, когда компилируется ваш Perl, и будет перекомпилироваться при каждом изменении исходного кода. XS компилируется один раз, а двоичный файл сохраняется в виде .so-файла, например библиотеки.
Perl написан на C, поэтому XS использует собственные типы Perl и механизмы подпрограмм. Модуль, использующий XS, работает почти так же эффективно, как встроенная языковая функция. В Inline некоторые вещи сделать труднее, и при вызове или возврате из вашего кода будет преобразование. При этом Inline делает хорошую работу, не перекомпилируя, когда в этом нет необходимости, и преобразования в и из Inline-кода вряд ли станут заметным ударом по производительности.
Наконец, написание XS предполагает, что вы упаковываете модуль. Требуется много настроек и знаний о Perl-кишках и упаковке модулей. Если вам просто нужно вызвать библиотеку C из Perl, вам лучше использовать Inline.