A) This is quite commom.
Depending on the disk-controller a drive may be reported as having slightly smaller or larger capacity.
There are several ways in which a SATA controller can present the cyclinders/heads/sectors (CHS system) or LBA blocks that the drive contains to the OS. If CHS is used that may result in a smaller capacity than the actual LBA blocks, because CHS numbers need to be rounded down to whole numbers.
E.g Let's assume that CHS = 10/4/5 which amounts to 10*4*5=200 LBA blocks. But if the drive has really 202 blocks those last 2 can't be represented in CHS.
Even if internally everything is done in LBA controllers often still round down to CHS values for compatibility with older Operating Systems that don't support LBA and need CHS in stead. (If the full LBA size is used in such a case the older system would NOT be able to access the last part of the drive.)
In your case the USB3 to SATA bridge in the USB3 enclosure does it slightly differently as the on-board SATA chip in your motherboard. In case of large drives the round-off error may be quite significant as you noticed.
B) Some enclosures reserve a small part of the disk for their build-in encryption and/or PortabelApps software. That may also account for the discrepancy.
Moral of this story: When you move a disk between controllers make sure to re-partition the disk with the geometry as determined by the new controller.
The original partition layout as determined on the original controller may not be valid on the new controller. And you will never know unless you try to access data at the very end of the disk.