Я знаю, что это старый вопрос, но я только что ответил на него и думаю, что знаю ответ.
Я думаю, что jquery_update вызывает это.
jquery_update реализует hook_theme_registry_alter, который изменяет $ theme_registry, так что jquery_update_preprocess_page запускается последним. Это несмотря на то, что Питер видит в $ theme_registry, потому что изменение происходит после того, как он на это смотрит.
jquery_update получает $ scripts от drupal_add_js (), возится с массивом и затем сбрасывает $ variable ['scripts'], который перезаписывает любые изменения, сделанные ранее.
Я не уверен, что такое идеальное решение. Я не думаю, что мы действительно должны связываться со строкой сценариев напрямую. У меня есть специальный случай на одну страницу, поэтому я, вероятно, собираюсь сделать несколько плохую вещь, вызывая мой код из jquery_update_preprocess_page. jquery_update для Drupal 6 вряд ли будет обновляться сейчас. Это кажется лучше, чем вступать в дуэль в битве за то, кто последним.