Проблема была один в один. Дело в различных версиях PHP и их способах работы с сессионными куками. Вот мое заключение по этому вопросу:
Начиная с версии 4.3.3 Set-Cookie передается с каждым session-start() (при use_cookies = 1, естественно). Рассмотрим подробнее, что происходит, когда session id приходит через cookie и/или через get и как влияет установка use_trans_sid.
1. Session id приходит через cookie
- Php 4.3.3: принимает session id, отправляет Set-Cookie
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie
2. Session id приходит через get (cookie не приходит, use_trans_sid = 0)
- Php 4.3.3: принимает session id, отправляет Set-Cookie
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie (т.е. если не поддерживать Session id в URL, при следующем запросе старая сессия теряется)
3. Session id приходит через get (cookie не приходит, use_trans_sid = 1)
- Php 4.3.3: принимает session id, отправляет Set-Cookie, добавляет SID ко всем URL
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie, добавляет SID ко всем URL
4. Session id приходит и через get и через cookie (use_trans_sid = 1)
- Php 4.3.3: принимает session id, отправляет Set-Cookie, не добавляет SID ко всем URL. Таким образом, сессия инициализируемая session id через get, полностью переходит в cookie на втором запросе.
- Php < 4.3.3: принимает session id, не отправляет Set-Cookie, не добавляет SID ко всем URL. Однако, этот случай будем считать невозможным, в смысле того, что сессия инициализируемая session id через get при включенном use_trans_sid не перейдет в cookie.
5. Session id приходит и через get и через cookie (use_trans_sid = 0)
- Приоритет у cookie, см. пункт 1.
При включенном use_only_cookies Php 4.3.3 продолжает посылать Set-Cookie при каждом session_start().
*Смущает только, что в Changelog'ах ничего нет по этому поводу ((