If you look through the /etc/rc script, you will first see the default PF rules loaded, then the
netstart(8) script gets called, and then your $pf_rules (default: /etc/pf.conf) file gets loaded. For OpenBSD 5.2, this starts at line #322 in /etc/rc.
Logically, it would appear to me that the interface should be available once the netstart script has completed, but it may take a second or two to establish the pseudo device. You might try appending a line with
!sleep 2 to your
hostname.pppoe0 file, to add a delay to permit the pseudo device time to be available to PF, and see if that works for you.
I'm not a PPPoE user, but over the years I've come to understand that the userland
pppoe(8) is considerably easier to implement and manage than the kernel driver
pppoe(4). FAQ 6 mentions both but describes pppoe(8) as being the "main" software interface. If you're unable to get kernel PPPoE working properly, you might see what the userland implementation may be able to do for you.