Примитивы рисования в WPF хранят все значения измерений / местоположений в двойных числах - по-видимому, все, кроме Int32Rect, как вы указали. Причиной такого дизайна является то, что WPF не связан непосредственно с пикселем на дисплей - он использует «независимые от устройства пиксели» (DIP), которые можно масштабировать для любого устройства, на котором он отображается. Это дает WPF возможность легко масштабировать и переводить все, что он отображает.
Что касается System.Windows.Int32Rect, я вижу, что единственное место, где он используется внутри API, - это захват и обрезка пикселей. Это имеет смысл - при выполнении снимка экрана вы хотите получить именно те пиксели, которые в данный момент отображаются на устройстве.