There is bug in sprite attachment loader:
When a sprite contains transparent alpha areas around the sprite graphics, and is packed using Unity's sprite packer, the Unity's sprite packer strips the transparent areas to reduce sprite size, which causes the SpriteAttachmentLoader to calculate wrong size for the sprite. I couldn't find option to disable this behaviour in the sprite packer, but was able to find the part which causes the wrong scale. I changed this line in SpriteAttacher.cs line 161:
Vector3 size = bounds.size;
to
Vector3 size = new Vector3(sprite.textureRect.size.x / sprite.pixelsPerUnit, sprite.textureRect.size.y / sprite.pixelsPerUnit);
and now also sprites with alpha areas around them appear in correct scale.
EDIT: Also the pivot needed adjustment in this case, for which this formula seems to give correct attachment offset:
var pivot4x = new Vector2( //Or in unity5, sprite.pivot
sprite.rect.width * (-bounds.center.x / bounds.extents.x / 2 + 0.5f),
sprite.rect.height * (-bounds.center.y / bounds.extents.y / 2 + 0.5f));
var offset = new Vector2(
(sprite.textureRectOffset.x + sprite.textureRect.size.x * 0.5f - pivot4x.x) / sprite.pixelsPerUnit,
(sprite.textureRectOffset.y + sprite.textureRect.size.y * 0.5f - pivot4x.y) / sprite.pixelsPerUnit);
And put the offset vector to RegionOffsetX/Y