Thousands separator is not the only possible formatting of numbers, browsers can remove leading zeroes, it's unknown how "minus" character in the middle of text will be processed (if we talk about credit card number), etc. Actually, type=numeric should be used for numbers only and not for ids or similar fields, so it's reasonable to display "numerics" using locale settings.
As to credit card numbers, the correct way should be to use pattern attribute, but it seems that Android browser doesn't take it into account and displays full alphanumeric keypad. And type=tel is reasonable workaround until pattern-dependent keypads will be supported by most browsers. But it has wrong semantics too, and browsers could start to display contact manager for type=tel fields (let's patent this idea before Apple will do it

).