You are drawing with dp, not physical pixels. dp try to abstract from the physical size and give the user a GUI element of the same physical size. So if the pixels on one device are smaller you need to use more physical pixels to obtain the same effect as on a device with bigger pixels.
So:
800 pixel / 240 pixel per inch = 3 1/3 inch (physical length of that screen dimension). Size of one pixel: 1 pixel / 240 pixel per inch = 0,004 inch.
800 pixel / 160 pixel per inch = 5 inch. Size of one pixel: 1 pixel / 160 pixel per inch = 0,006 inch.
So with the same resolution (number of pixels) the pixels in the lower density device are significantilly bigger (around 50% bigger in each dimension). So you need less physical pixel to draw the circle to show the circle with 15 dp.
Simply said: Low dpi means bigger pixel. Same resolution (number of pixel) means lower dpi device has a bigger screen.
So on physical devices these circles have the same physical size on devices with different size. But your emulator windows have the same size, for speed reasons one physical pixel is mapped to one physical pixel on your computer screen. So you are using less pixel on the low dpi device but paint them with same-size physical pixels. Solution: You need to resize the emulator window so it matches the real size. I just don't have access to my Android SDK installation but IIRC you can set the (computer) screen dpi in the AVD launch options so the size will be set automatically.
Here are the images scaled to retain the proportion of the real devices:
As you can see the circles have the same physical size, as have the action bar, the icon and the status bar.