It looks like CreateIconFromResource() automatically DPI scales the cursor, whereas CreateIconIndirect() does not. Since icon resources can contain multiple sizes of cursors, I'm guessing that CreateIconFromResource() will do the right thing if we just provide all the alternate surface images for a cursor, and we can just use that as our single cursor path.
As it is, if you create an animated cursor (with multiple frames since 23fcf53), it will be larger than a single frame cursor of the same size, when DPI scaling is enabled.