If a user doesn't have the admin permission for an entity type this doesn't mean you can't allow the user specific operations on specific existing entities:
/**
* Implements hook_ENTITY_TYPE_access() for entity type "block".
*/
function mymodule_block_access(\Drupal\block\Entity\Block $block, $operation, \Drupal\Core\Session\AccountInterface $account) {
if ($operation == 'update' && $block->getPluginId() == 'custom_block_plugin_id') {
return AccessResult::allowed();
}
return AccessResult::neutral();
}