My bad - not English, but ASCII. The assumed max tweet size is in bytes rather than (UTF) characters.
280 * 4 = 1120, not 560.
If it counted UTF-16 code units that would be dumb. It doesn't. The cutoff was deliberately set to keep the 140 character limit for CJK but increase it to 280 for the rest. And they did that based on observational data.
https://cdn.cms-twdigitalassets.com/content/dam/blog-twitter...
https://blog.twitter.com/en_us/topics/product/2017/Giving-yo...
Side note, this is more pessimistic than it needs to be, if you're willing to transcode. The larger codepoints fit into 20-21 bits, and the smaller ones fit into 12-13 bits.