I've tended to do both. For my Sybase interface(s) I've written external-centric modules (Sybase::CTlib, f.ex.), as this will give maximum power to those who know how to use it (and because I can't forsee all the situations in which it might be used, and that this will make it most easy to upgrade as the Sybase API changes with new features).
But I've also written Sybase::Simple for those who wish to have a more perl-like API (and a simpler one). Sybase::Simple suffers some overhead as it is built on top of Sybase::CTlib, but that should be acceptable in all but the most extreme cases.