Моя первая мысль: стикер должен ссылаться на конкретное сообщение, подобно ответу, а не просто на тему. В длинном обсуждении пользователь мог бы захотеть прикрепить несколько стикеров к разным сообщениям в теме.
Использование таблицы sticky_post имеет свои преимущества, но, вероятно, потребуется исключать записи из sticky_post из отображения или обработки во многих местах, а не только при выводе темы — например, при отправке писем. Кроме того, придётся для каждого сообщения искать в таблице sticky_post, является ли оно стикером от этого пользователя, и обрабатывать его иначе, чем стикер от другого пользователя.
Отдельный тип сообщения (post_type) тоже мог бы быть полезен, но это, возможно, должно быть частью ядра Discourse, и могут существовать другие проблемы с таким подходом, о которых я сейчас не знаю.
Также есть пользовательские поля сообщений, которые могут быть лучшим решением, чем пользовательские поля тем, хотя, вероятно, они имеют многие из тех же проблем и ограничений, что и таблица sticky_notes, как и размещение этой информации в таблице plugin_store_notes.
Комбинированный подход, при котором в пользовательских полях темы есть запись, указывающая на наличие стикеров в этой теме, мог бы оказаться перспективным. Если стикеров нет, то таблица пользовательских полей сообщений не нуждается в поиске индикатора стикера.