First off, I never advised you to use analogWrite() on any of this.

You can't really use that since you are modifying the timer control registers outside what the Arduino libraries expect. Here is some code that I wrote that generates a 25kHz Fast PWM signal on pin 3.
const int PWMPin = 3;
void setup() {
// generate 25kHz Fast PWM (mode 7) pulse rate on Pin 3
pinMode(PWMPin, OUTPUT); // OCR2B sets duty cycle
// pinMode(11, OUTPUT);
// Set up Fast PWM on Pin 3
TCCR2A = 0x23; //0x23 COM2B1, WGM21, WGM20
// Set prescaler
TCCR2B = 0x0A; //0x0A WGM22, prescaler = /8
// Set TOP and initialize duty cycle to zero(0)
OCR2A = 79; // 79 TOP DO NOT CHANGE, SETS PWM PULSE RATE TO 25KHZ
OCR2B = 39; // duty cycle for Pin 3 (0-79) generates 1 500nS pulse even when 0 :(
}
void loop() {
}
I did some playing around and sure enough, it only generates a 100% duty cycle output on DP11. After reading the description of Fast PWM about 50 times, this is what I think is happening. I didn't put a scope on it, but I'm betting that pin 11 has a narrow spike where it drops out when the TCNT2 register matches OCR2A and then goes high again on the next clock tick as the TCNT2 resets to 0.
If you think about it, pin 11 is basically doing the same thing that pin 3 is doing. It is going HIGH while 0<=TCNT2<=OCR2A (pin 3 cares about OCR2B). When TCNT2 = OCR2A (TOP for both pins), I think the pin possibly drops for a clock tick then goes high again when TCNT2 resets to 0. It's effectively a 100% duty cycle since OCR2A is also the same as TOP.
Like you, if I try using the toggle option I only get half the pwm rate and a locked 50% duty cycle.
If you are willing to live with inexact PWM rates, you can generate two different duty cycles on pin 3 and pin 11 by using Mode 3 Fast PWM. In that case, TOP is 0xFF and OCR2A and OCR2B would determine the respective duty cycles of those pins.