Вы можете посмотреть в коде c (array.c), если он вызывает какие-либо вызовы метода ruby (rb_funcall), то я считаю, что он не безопасен для потоков.В противном случае это должно быть ...
Вы можете легко переопределить #pop et al. И заставить их иметь собственную синхронизацию.