У вас одинаковые реквест коды у PendingIntent. При создании PendingIntent система смотрит, есть ли аналогичный Intent, созданные ранее, или нет. Если есть - использует его. В вашем случае оба Intent одинаковы (iMore и iClose). Точнее, интенты различаются экстра-данными, но при сравнении они не учитываются. Поэтому при создании piClose берется интент iMore, а не iClose.
Как пофиксить: использовать в PendingIntent разные request code. Например, так:
Intent iMore = new Intent(MainService.BROADCAST_ACTION);
iMore.putExtra(ACTION, "more");
PendingIntent piMore = PendingIntent.getBroadcast(this, 1, iMore, 0);
Intent iClose = new Intent(MainService.BROADCAST_ACTION);
iClose.putExtra(ACTION, "close");
PendingIntent piClose = PendingIntent.getBroadcast(this, 2, iClose, 0);