Using a custom module it's easy to simply hide the Assets section of the CP.
Users would still be able to access the assets library by entering manually the URL but this is good enough for my use case.
Here's the (simplified) code:
<?php
namespace modules\appModule;
use Craft;
use craft\events\RegisterCpNavItemsEvent;
use craft\web\twig\variables\Cp;
use yii\base\Module;
class AppModule extends Module
{
public function init()
{
$user = Craft::$app->getUser();
if (
Craft::$app->getRequest()->isCpRequest
&& !$user->isGuest
&& $user->getIdentity()->isInGroup('editors')
) {
Event::on(Cp::class, Cp::EVENT_REGISTER_CP_NAV_ITEMS, function(RegisterCpNavItemsEvent $event) {
$event->navItems = array_filter($event->navItems, static fn ($item) => $item['url'] !== 'assets');
});
}
}
}