You are partly right and your argument proves why you
can reflect a HoJ, here's why.
The Reflect mechanic is rolled on the same table as Cloak.
They are both in the MISS category and therefore are rolled after you cast HoJ, the spell must be registered as a SUCCESS to trigger the roll for the MISS table so the timeline on the combat log looks like this.
SPELL_CAST_SUCCESS HoJ - This denotes that you have pushed your bind for HoJ and the server has recognised it, the SUCCESS is not it landing, that is the server feedback to acknowledge that it has received the packet request to apply HoJ, the reason for this is even tho it is an instant cast it is still counted as a spell, the SUCCESS is the same for a cast time spell of 2s without the _CAST_START, SUCCESS is you COMPLETING the cast, the server then rolls from the MISS table to check the target for any MISS AURA (reflect/Cloak). Reflect is classed as Reflect, Cloak is classed as Immune, both are off the GCD so capable of bypassing that.
This is a hidden roll, i.e not in the combat log, and why people think you can't reflect an instant cast.
If the HoJ is successful the combat log reads back AURA_APPLIED HoJ, if one of the categories on the MISS table is up then you get HoJ_MISSED(ABSORB BLOCK DEFLECT DODGE EVADE IMMUNE MISS PARRY REFLECT RESIST)
So basically the SPELL_SUCCESS is the trigger for the bot to cast reflect as the next thing the server is about to do is check for MISS AURA, just like you thought with cloak.
Don't believe me?
Here's the link for the MISS table, you'll find reflect on there 9th down.
http://www.wowwiki.com/API_COMBAT_LOG_EVENT