Punycode is a way to encode arbitrary Unicode codepoints using ASCII. It's used for international domain names. Not supporting Punycode means an appreciable fraction of the Internet is pretty difficult to reach, if you want to have people enter something reasonably readable and get where they want to go.
For instance, the punycode encoding of "ﻞﻴﻬﻣﺎﺒﺘﻜﻠﻣﻮﺸﻋﺮﺒﻳ؟" is "xn--egbpdaj6bu4bxfgehfvwxn". A human cannot reasonably interpret between the two, so it is unacceptable for me to ask my users to enter the puny-encoded version of a URL.
Punycode is a way to encode arbitrary Unicode codepoints using ASCII. It's used for international domain names. Not supporting Punycode means an appreciable fraction of the Internet is pretty difficult to reach, if you want to have people enter something reasonably readable and get where they want to go.
For instance, the punycode encoding of "ﻞﻴﻬﻣﺎﺒﺘﻜﻠﻣﻮﺸﻋﺮﺒﻳ؟" is "xn--egbpdaj6bu4bxfgehfvwxn". A human cannot reasonably interpret between the two, so it is unacceptable for me to ask my users to enter the puny-encoded version of a URL.