I wouldn't consider this issue a bug. It just requires that you revise your approach to work around the fact that adding a package option group starts a new transaction. Removing the transaction from the model would entail all areas of the system that call this method should create a transaction instead. This widens the scope and complexity of managing transactions.
Ideally, every model would impose its own transaction to be self-contained, and if you intend to chain multiple model methods together in a broader transaction, you would create a broader transaction, and the lower level model calls would use the broader transaction without imposing their own (nesting). That may be something we add in the future, but for now, I would suggest updating you plugin to record the package option groups itself without calling PackageOptionGroups::add.