Is there any way to resolve this? Maybe set the namevar differently on one? I'm pretty sure I can solve this problem by installing the ruby-sqlite3 package from my distribution, but that won't always work, not by a long shot.

im pretty new to puppet...but according to the book 'pro puppet' the problem here is that the puppet language has no correct order cause its declarative....the only way to not end up in an infinite loop here (require => Package['sqlite3']) is to through an exception/error

as you already mentioned ... i think this could solve this issue, too: