I don't think your understanding is correct. I have generated my CSR "by hand", and then I've downloaded the rest via XCode once uploaded on the portal.
I understand the XCode feature is useful for teams, since you have a team Provisioning profile, and a user certificate. It might also be the case for multi-Mac development (like when I'm on my MBA or my iMac, which requires importing the private key from one keychain to the other).
Edit: I'd love to help out more, but when running the "refresh", XCode crashed on me :-)
UNCAUGHT EXCEPTION (NSInvalidArgumentException): *** setObjectForKey: object cannot be nil (key: teamId)
UserInfo: (null)
Hints: None
Backtrace:
0 0x00007fff89ffcaee __exceptionPreprocess (in CoreFoundation)
1 0x00007fff8b3de3f0 objc_exception_throw (in libobjc.A.dylib)
2 0x00007fff8a08b5b7 -[__NSDictionaryM setObject:forKey:] (in CoreFoundation)
3 0x000000010acffd88 +[DTDKTeamBasedService _createRequestDictionaryForTeam:andPlatform:] (in DTDeviceKit)
Bizarre that it seems XCode tries to set the TeamId to null :/