In your second script the N command does join a current pattern space with the next line; however the s command causes the (updated) pattern space to be printed out. Essentially, you join pairs of lines.
My recommendation would be to use a hold buffer, and careful addressing like this:
/PowerOnHours/ !{
# Notice the negation. Any line not matching is appended to the hold buffer
H
}
/PowerOnHours/ {
# Got the end of record. Append it to the hold buffer...
H
# ...copy the hold buffer into the pattern space...
g
# ...replace newlines with tabs...
s/\n/^I/g
# ...print out the desired result
p
# Finally, clear the pattern space and place an empty line in the hold buffer
# for the next iteration.
s/.*//
h
}