Two main options
1) Run it through with assembly.
Make a savestate before the boss is started (check any vram viewers just in case)
Set a break on read for the location in the ROM. You will then find the instruction that fetches that and the few before.
Work back through that and you will find out where it initially comes from in the game, depending upon the style of game it can vary (a simple platformer might be all in the code, a RPG with hundreds of enemies will likely be a table).
If it always lands in the same location in VRAM you can also do a break on write for that and work backwards.
2) Hope for a pointer.
The game itself will likely first copy it into VRAM and then do all its operations from there. If you know the location of the thing in ROM then you can look through the game for any references to that location, the GB/GBC's MBC addressing thing ( http://bgb.bircd.org/pandocs.htm#memorybankcontrollers
) can make this a tad more complicated than some other systems where all the game is visible in memory at all times but it should still be doable. More effective in the RPG with hundreds of enemies scenario but certainly not exclusive to it.
If it is a table approach then it will tend to follow a pattern of sorts (can be anything from one pointer after another to just another entry in the stats table). For something more embedded into the code there might still be an easy pattern.