Constraint doesn't attach from BundleFieldDefinition, but does from entity_bundle_field_info_alter()
Yes, both are different. In core the system to define bundle fields in code is broken from the beginning. Commerce did implement their own system (entity traits), but although it looks like the fields are defined in code, in reality they are not. Commerce adds them to config and doesn't transfer constraints in this process.