Não é que isso não faça sentido, mas funciona mal em 99% das vezes.
Geralmente, os retângulos gráficos 2D são inicializados, armazenados e manipulados como um par de pontos. Em nenhum idioma específico,
class Rect:
p1, p2: point
Faz mais sentido definir um retângulo como dois valores x e dois valores y, assim:
class Rect
xleft, xright: int
ytop, ybottom: int
Com dois pontos, se em algum lugar do código-fonte você quiser usar o valor y do topo, você deve dizer rect.p1.y (hmmm, pare e pense, é p1 ou p2), mas com os quatro valores como membros simples dos dados, é claro e direto: rect.ytop (não é necessário pensar!) O uso de dois pontos significa que, ao lidar com a vertical, é necessário emaranhar a horizontal; há uma relação estranha entre elementos independentes.
Como surgiu essa ideia de dois pontos e por que persiste? Tem algum benefício sobre as coordenadas nuas x e y?
NOTA ADICIONADA: Esta pergunta está no contexto de retângulos alinhados com XY, como em gerenciadores de janelas e kits de ferramentas da GUI, não no contexto de formas arbitrárias no aplicativo de desenho e pintura.