It's possible, that no permission error will occur, while accessing shipping type details on Front-End. Problem source could be hidden inside ShippingEventHandler::OnAfterItemLoad method contents. Inside that method object of "sc" prefix (shipping cost) is retrieved and manipulated. It's not clear to me why we need to do that all, but still need to checked out.
To test that you need to create a custom tag (in ShippingTagProcessor), with such code:
$object =& $this->getObject( Array ('skip_autoload' => true) );
/* @var $object kDBItem */
Shipping type with ID = 1 already should exist before testing is started. Perform this on Front-End with logged-in/guest users and in administrative console (on shipping type editing) by "root" / admin user.