There is currently a hard requirement for a region code matching the first 2 letters of the subdivision code.
That is needlessly strict, and introduces a dependency on likely subtags that should not be there.
It should be changed to be a recommendation.
A unicode_subdivision_id is only valid in a unicode_locale_id if it starts with the unicode_region_subtag in the unicode_language_id (after adding likely subtags, and comparing case-insensitively).
en-US-u-sd-usca is valid — the region "US" matches
en-CA-u-sd-gbsct is invalid — the region "gb" does not match "CA"
en-u-sd-gbsct is invalid — after adding likely subtags, this becomes en-Latn-US-u-sd-gbsct, where the region "gb" does not match "US"
It is strongly recommended that a unicode_locale_id contain a unicode_region_subtag if it contains a unicode_subdivision_id. That produces better behavior if the language tag is truncated or if the unicode_subdivision_id is ignored by an implementation.
If a unicode_subdivision_id contains both a unicode_region_subtag and a unicode_subdivision_id, it is only valid if the unicode_subdivision_id starts with the unicode_region_subtag (case-insensitively).
en-US-u-sd-usca is valid — the region "US" matches the first part of "usca"
en-CA-u-sd-gbsct is invalid — the region "CA" doesn't not match the first part of "gbsct". An implementation should either return an error or disregard the subdivision id.
en-u-sd-gbsct is valid but not recommended — an implementation that ignores the unicode_subdivision_id could add likely subtags and get the invalid en-Latn-US-u-sd-gbsct.