The prefix $ has nothing to do with how many tiles are taken up by an event sprite. $ simply means there is ONE character on that character sheet, and not 8. Even if you had 8 characters (no $) you could still make them as big as you want - they just all have to be the same size.
I had done a script that would give an event a larger 'base' for collision (so you couldn't walk under it), but it only really worked for events that didn't move. It checks whether the player collides with it, not whether it collides with anything else. It would need a bit of work to be able to do what you are wanting.
Aside from a scripting solution, the only thing I can think of is to create additional events on either side, that are set to the same priority as the event with the sprite, and have a parallel process trigger that continually checks the position of the 'key' event and moves to be to the right or left of it. If you do this, make sure you add a Wait at the start or the end so it doesn't cause lag.