Кодирование URL происходит, конечно же, на стороне сервера. Только проблема несколько в другом. Сервер показывает страницу по некоторому адресу, в котором есть "?". Скрипт AdSense должен взять адрес страницы на котором выполняется и отправить запрос к себе на сервер. Так вот на стороне Google некорректно выполняется обратное преобразование адреса. В результате вместо запроса на страницу "/test.html?param=1" выполняется запрос на страницу "/test.html%3Fparam=1". А это совершенно другая страница и поэтому сервер совершенно корректно поступает когда отдает 404.
Аналогичная проблема. Все страницы, в адресе которых есть "?", запрашиваются Mediapartners-Google через %...